Mysql
 sql >> база данни >  >> RDS >> Mysql

Прехвърляне на индекс към временна таблица от обикновена таблица?

Можете да използвате 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. phpMyAdmin - не мога да се свържа - невалидни настройки - откакто добавих root парола - заключен

  2. Какъв е добър подход за управление на db връзката в Google Cloud SQL (GAE) Python приложение?

  3. Извличане на кортежи с определени общи стойности в друга колона в SQL

  4. Колоната не може да бъде нула Mysql

  5. Грешка във външния ключ на MySQL 1005 errno 150 първичен ключ като външен ключ