Saya punya meja dengan 1,4 miliar catatan. Struktur tabel adalah sebagai berikut:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
Syaratnya adalah membuat indeks di atas kolom text
.
Ukuran tabel sekitar 34G.
Saya telah mencoba membuat indeks dengan pernyataan berikut:
ALTER TABLE text_page ADD KEY ix_text (text)
Setelah 10 jam menunggu, akhirnya saya menyerah pada pendekatan ini.
Apakah ada solusi yang bisa diterapkan untuk masalah ini?
UPDATE : tabel tidak mungkin diperbarui atau dimasukkan atau dihapus. Alasan mengapa membuat indeks pada kolom text
adalah karena jenis kueri sql ini akan sering dieksekusi:
SELECT page_id FROM text_page WHERE text = ?
UPDATE : Saya telah memecahkan masalah dengan mempartisi tabel.
Tabel dipartisi menjadi 40 bagian pada kolom text
. Kemudian membuat indeks di atas meja membutuhkan waktu sekitar 1 jam untuk menyelesaikannya.
Tampaknya pembuatan indeks MySQL menjadi sangat lambat ketika ukuran tabel menjadi sangat besar. Dan partisi mengurangi tabel menjadi batang yang lebih kecil.
CREATE INDEX
pernyataan normal ?