Ho una tabella con 1,4 miliardi di dischi. La struttura della tabella è la seguente:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
Il requisito è creare un indice sulla colonna text
.
La dimensione del tavolo è di circa 34 G.
Ho provato a creare l'indice con la seguente dichiarazione:
ALTER TABLE text_page ADD KEY ix_text (text)
Dopo 10 ore di attesa, finalmente rinuncio a questo approccio.
Esiste una soluzione praticabile su questo problema?
AGGIORNAMENTO : è improbabile che la tabella venga aggiornata, inserita o eliminata. Il motivo per cui creare un indice nella colonna text
è perché questo tipo di query sql verrebbe eseguito frequentemente:
SELECT page_id FROM text_page WHERE text = ?
AGGIORNAMENTO : ho risolto il problema partizionando la tabella.
La tabella è suddivisa in 40 pezzi su colonna text
. Quindi la creazione dell'indice sulla tabella richiede circa 1 ora per il completamento.
Sembra che la creazione dell'indice MySQL diventi molto lenta quando le dimensioni della tabella diventano molto grandi. E il partizionamento riduce la tabella in tronchi più piccoli.
CREATE INDEX
affermazione?