Eu tenho uma tabela com 1,4 bilhão de registros. A estrutura da tabela é a seguinte:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
O requisito é criar um índice sobre a coluna text
.
O tamanho da tabela é de cerca de 34G.
Eu tentei criar o índice pela seguinte instrução:
ALTER TABLE text_page ADD KEY ix_text (text)
Após 10 horas de espera, finalmente desisto dessa abordagem.
Existe alguma solução viável para esse problema?
UPDATE : é improvável que a tabela seja atualizada, inserida ou excluída. A razão pela qual criar um índice na coluna text
é porque esse tipo de consulta sql seria frequentemente executado:
SELECT page_id FROM text_page WHERE text = ?
ATUALIZAÇÃO : Eu resolvi o problema particionando a tabela.
A tabela é dividida em 40 partes na coluna text
. A criação do índice na tabela leva cerca de 1 hora para ser concluída.
Parece que a criação do índice MySQL se torna muito lenta quando o tamanho da tabela se torna muito grande. E o particionamento reduz a tabela em troncos menores.
CREATE INDEX
declaração normal ?