MySQL: indicizzazione full-record dei record precedenti?
-
03-07-2019 - |
Domanda
Ho aggiunto un indice FULLTEXT su tre delle mie colonne, dopo che avevo già un sacco di record ... significa che FULLTEXT non li indicizzerà e indicizzerà solo i record inseriti dopo l'aggiunta dell'indice FULLTEXT? In tal caso, comunque per reindicizzare l'intero database?
Soluzione
Quando esegui ALTER TABLE ADD INDEX, i vecchi record vengono immediatamente indicizzati (e i nuovi record vengono indicizzati non appena vengono INSERITI). Questo vale anche per gli indici FULLTEXT.
Si noti tuttavia che a volte (ad es. quando si cambiano le opzioni ft_min_word_len, ft_max_word_len o ft_stopword_file) è necessario ricostruire un indice FULLTEXT, vedere http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html per i dettagli.
Altri suggerimenti
È responsabilità di MySQL, non tua, garantire che gli indici siano coerenti con i dati che stanno indicizzando.
Quando aggiungi un indice su dati esistenti, MySQL costruirà l'indice in base a quei dati esistenti.
Gli indici FULLTEXT non fanno eccezione.
Dovresti solo ricostruire un indice se sospetti che la tua tabella sia stata corrotta in qualche modo, o hai fatto qualche altra modifica avanzata al modo in cui MySQL costruisce i suoi indici.