Вы можете использовать CREATE TEMPORARY TABLE temp_table LIKE regular_table
, но это создаст все индексы, поэтому, когда вы сделаете INSERT INTO temp_table SELECT * FROM regular_table
, индексы будут перестроены - что может занять много времени.
Или вы можете создать таблицу и впоследствии добавить индекс:
CREATE TEMPORARY TABLE temp_table
ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
INSERT INTO temp_table SELECT * FROM regular_table
но индекс будет снова обновляться при каждой вставке.
Вероятно, наиболее эффективным способом было бы создать временную таблицу, вставить все, затем построить индекс:
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
Опять же, вам придется дождаться построения индекса, за исключением того, что это произойдет в одном фрагменте с последним оператором ALTER.