sql >> Databáze >  >> RDS >> Mysql

Předat index do dočasné tabulky z běžné tabulky?

Můžete použít CREATE TEMPORARY TABLE temp_table LIKE regular_table , ale tím vytvoříte vše indexy, takže když provedete INSERT INTO temp_table SELECT * FROM regular_table , indexy budou přestavěny – což může být zdlouhavé.

Nebo můžete vytvořit tabulku a přidat index později:

CREATE TEMPORARY TABLE temp_table
ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
INSERT INTO temp_table SELECT * FROM regular_table

ale index bude opět aktualizován při každém vložení.

Pravděpodobně nejúčinnějším způsobem by bylo vytvořit dočasnou tabulku, vložit vše a poté vytvořit 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

Opět budete muset počkat, než se index sestaví, kromě toho, že se tak stane v jednom bloku, s posledním příkazem ALTER.



  1. Vlastní formátování data a času na serveru SQL

  2. Nové funkce Oracle Database 20c

  3. Převeďte tento dotaz na výmluvný

  4. Jak získat poslední den v měsíci v MySQL