Vous pouvez utiliser CREATE TEMPORARY TABLE temp_table LIKE regular_table
, mais cela créera tous les index, donc quand vous faites INSERT INTO temp_table SELECT * FROM regular_table
, les index seront reconstruits - ce qui peut être long.
Ou, vous pouvez créer la table et ajouter l'index par la suite :
CREATE TEMPORARY TABLE temp_table
ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
INSERT INTO temp_table SELECT * FROM regular_table
mais l'index sera, encore une fois, mis à jour à chaque insertion.
Le moyen le plus efficace serait probablement de créer la table temporaire, de tout insérer, puis de créer l'index :
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
Encore une fois, vous devrez attendre que l'index soit construit, sauf que cela se produira en un seul morceau, avec la dernière instruction ALTER.