You might try this kind of thing if you MUST use myISAM. You need to be at version 5.0 or higher. If you're not, upgrade.
- Create a new table with a temporary name
- Populate the new table (this is the time-consuming operation)
- Lock your production table.
- Rename the production table to something else.
- Rename your temporary table to the name used for your production table.
- Unlock the production table.
- Drop the old production table (or do something else to re-use the disk space).
If you can make the software you're using to read this resilient to a SQL error that complains about a missing table, and simply have it try again after a second or so, you can skip the locking and unlocking steps. But those steps protect your system from the brief moment, during the renaming shuffle where there's no table with the correct name for the production table.
This is monkey business, and takes a bit of debugging. But it has worked very well for me.
(I define "monkey business" to be stuff outside the scope of pure, elegant, SQL.)