sql >> Database >  >> RDS >> Mysql

Index doorgeven aan tijdelijke tafel van gewone tafel?

Je zou kunnen gebruiken CREATE TEMPORARY TABLE temp_table LIKE regular_table , maar dat maakt alle de indexen, dus wanneer u INSERT INTO temp_table SELECT * FROM regular_table doet , zullen de indexen opnieuw worden opgebouwd - wat lang kan duren.

Of u kunt de tabel maken en daarna de index toevoegen:

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

maar de index zal, opnieuw, bij elke invoeging worden bijgewerkt.

Waarschijnlijk de meest efficiënte manier zou zijn om de tijdelijke tabel te maken, alles in te voegen en daarna de index op te bouwen:

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

Nogmaals, je zult moeten wachten tot de index is opgebouwd, behalve dat het in één stuk zal gebeuren, met de laatste ALTER-instructie.



  1. CakePHP 3 - Datum ontleden met LocalStringFormat om het SQL-formaat en correcte validatie te corrigeren

  2. JDBC op Google Apps Script. Uitzondering:Afschrift geannuleerd wegens time-out of verzoek van klant

  3. Verbinding maken met een MySQL-database in .NET

  4. MySql Count kan geen 0 waarden weergeven