OK, here's the reason. MySQL originally created indexes
via 'alter table add index name (field1,field2,...) syntax.
"create index ..." is a synonym. And ALL alter tables
do the following:
-----------------------------------------------------------
ALTER TABLE works by making a temporary copy of the original table. The alteration is performed on the copy, then
the original table is deleted and the new one is renamed. This is done in such a way that all updates are automatically
redirected to the new table without any failed updates. While ALTER TABLE is executing, the original table is readable
by other clients. Updates and writes to the table are stalled until the new table is ready.
Note that if you use any other option to ALTER TABLE than RENAME, MySQL will always create a temporary table, even
if the data wouldn't strictly need to be copied (like when you change the name of a column). We plan to fix this in the
future, but as one doesn't normally do ALTER TABLE that often this isn't that high on our TODO.
---------------------------------------------------------------------------
Yack shit. This piss poor design might be reason enough not use it.
On the other hand, if I can create all indexes on one pass, it might
be worth it.