У меня есть таблица с 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
выражения?