1,4 milyar kayıtlı bir masam var. Tablo yapısı aşağıdaki gibidir:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
Gereksinim, sütun üzerinde bir dizin oluşturmaktır text
.
Tablo boyutu yaklaşık 34G'dir.
Aşağıdaki ifade ile dizin oluşturmaya çalıştım:
ALTER TABLE text_page ADD KEY ix_text (text)
10 saat bekledikten sonra nihayet bu yaklaşımı bıraktım.
Bu soruna uygulanabilir bir çözüm var mı?
GÜNCELLEME : tablonun güncellenmesi, eklenmesi veya silinmesi olası değildir. Sütunda dizin oluşturmanın text
nedeni, bu tür sql sorgusunun sık sık yürütülmesidir:
SELECT page_id FROM text_page WHERE text = ?
GÜNCELLEME : Sorunu tabloyu bölümlere ayırarak çözdüm.
Tablo sütun üzerinde 40 parçaya bölünmüştür text
. Ardından tablo üzerinde dizin oluşturma işleminin tamamlanması yaklaşık 1 saat sürer.
Tablo boyutu çok büyüdüğünde MySQL dizin oluşturma çok yavaş görünüyor. Ve bölümleme, tabloyu daha küçük gövdelere indirir.
CREATE INDEX
ifadeyi kullanmanın nesi yanlış ?