Podrías usar CREATE TEMPORARY TABLE temp_table LIKE regular_table
, pero eso creará todos los índices, así que cuando hagas INSERT INTO temp_table SELECT * FROM regular_table
, los índices se reconstruirán, lo que podría llevar mucho tiempo.
O bien, puede crear la tabla y agregar el índice después:
CREATE TEMPORARY TABLE temp_table
ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
INSERT INTO temp_table SELECT * FROM regular_table
pero el índice será, de nuevo, actualizado en cada inserción.
Probablemente la forma más eficiente sería crear la tabla temporal, insertar todo, crear el índice después:
CREATE TEMPORARY TABLE temp_table
ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
ALTER TABLE temp_table DISABLE KEYS
INSERT INTO temp_table SELECT * FROM regular_table
ALTER TABLE temp_table ENABLE KEYS
Una vez más, tendrá que esperar a que se genere el índice, excepto que sucederá en un solo fragmento, con la última instrucción ALTER.