Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Lulus indeks ke tabel sementara dari tabel biasa?

Anda dapat menggunakan CREATE TEMPORARY TABLE temp_table LIKE regular_table , tapi itu akan membuat semua indeks, jadi ketika Anda melakukan INSERT INTO temp_table SELECT * FROM regular_table , indeks akan dibangun kembali - yang mungkin akan memakan waktu lama.

Atau, Anda dapat membuat tabel dan menambahkan indeks setelahnya:

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

tetapi indeks akan, sekali lagi, diperbarui pada setiap sisipan.

Mungkin cara yang paling efisien adalah dengan membuat tabel temp, memasukkan semua, membangun indeks setelahnya:

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

Sekali lagi, Anda harus menunggu indeks untuk membangun, kecuali itu akan terjadi dalam satu bagian, dengan pernyataan ALTER terakhir.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kueri SQL sederhana memberikan penggunaan fungsi grup yang tidak valid

  2. masukkan data XML ke mysql dengan php

  3. MySQL membuat waktu dan memperbarui stempel waktu

  4. Koleksi Pernyataan yang Dipetakan tidak mengandung nilai untuk mybatis mapper

  5. mendapatkan kesalahan Status HTTP 405 - Metode HTTP GET tidak didukung oleh URL ini tetapi tidak pernah digunakan `get`?