EmptyTable vs. Pack

To my knowledge, "EmptyTable" chops off the file at the header,
initializing the relevant chain-pointers back to zero.  Everything
beyond the first 2K is returned to the operating system.  Obviously this
happens instantaneously.

"Pack" appears to copy all of the active records either to a new file or
certainly to a new chain within the existing one.  All of the blocks
become as full as they can be (which, BTW, is not always 100% full), and
the indexes are rebuilt to match.

Incidentally, I find that for most tables, which do not undergo constant
random deletions, simply rebuilding the indexes on a table is just as
good performance-wise as packing it.