У мене є таблиця з 1,4 мільярдами записів. Структура таблиці така:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
Вимога - створити індекс над стовпцем text
.
Розмір столу - близько 34G.
Я спробував створити індекс за допомогою наступного твердження:
ALTER TABLE text_page ADD KEY ix_text (text)
Після 10-годинного очікування я нарешті відмовився від такого підходу.
Чи є якесь дієве рішення цієї проблеми?
ОНОВЛЕННЯ : таблиця навряд чи буде оновлена, вставлена або видалена. Причина створення індексу на стовпці text
полягає в тому, що такий запит sql часто виконується:
SELECT page_id FROM text_page WHERE text = ?
ОНОВЛЕННЯ : Я вирішив проблему, розділивши таблицю.
Таблиця розділена на 40 штук на стовпчик text
. Потім створення індексу на столі займає близько 1 години.
Здається, що індекс MySQL стає дуже повільним, коли розмір таблиці стає дуже великим. А перегородка зменшує таблицю на менші стовбури.
CREATE INDEX
оператора?