Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przekazać indeks do tabeli tymczasowej ze zwykłej tabeli?

Możesz użyć CREATE TEMPORARY TABLE temp_table LIKE regular_table , ale to utworzy wszystko indeksy, więc kiedy robisz INSERT INTO temp_table SELECT * FROM regular_table , indeksy zostaną odbudowane - co może zająć dużo czasu.

Możesz też utworzyć tabelę i dodać indeks później:

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

ale indeks będzie ponownie aktualizowany przy każdej wstawce.

Prawdopodobnie najbardziej wydajnym sposobem byłoby utworzenie tabeli tymczasowej, wstawienie wszystkiego, a następnie zbudowanie indeksu:

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

Ponownie, będziesz musiał poczekać na zbudowanie indeksu, z wyjątkiem tego, że stanie się to w jednym kawałku, z ostatnią instrukcją ALTER.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z MySQL C API - sprawdź powodzenie wstawiania wierszy za pomocą przygotowanych instrukcji

  2. Wskazówki dotyczące aktualizacji z MySQL 5.7 do MySQL 8

  3. MySQL:wstawiaj do wielu tabel w tym samym zapytaniu za pomocą BEGIN&COMMIT

  4. Typy danych MySQL:poznaj, których należy używać i w jaki sposób

  5. Nie można ustawić nazw tabel z małymi literami w MySQL 8.x w systemie Windows 10