Gli aggiornamenti degli indici sono duplici.
La prima parte è inserire/aggiornare/cancellare la voce nell'indice. L'indice viene aggiornato non appena viene modificato un record e questo processo blocca la query fino al completamento.
Ciò consente un recupero più rapido dei record in base a una condizione su una colonna indicizzata, lo scopo più noto di un indice.
La seconda parte è l'aggiornamento delle statistiche dell'indice. Ciò consente all'ottimizzatore di determinare se per una determinata query vale la pena utilizzare l'indice. Immagina una query come SELECT * FROM users WHERE disabled = 0
. Supponiamo che la maggior parte degli utenti sia effettivamente attiva. Se le statistiche dell'indice sono aggiornate, l'ottimizzatore si renderà conto che la maggior parte dei record della tabella verrà restituita dalla query, la tabella dovrà essere scansionata quasi interamente. Probabilmente deciderà di non utilizzare l'indice e di scansionare la tabella immediatamente.
Questo aggiornamento non avviene automaticamente tranne in casi molto specifici situazioni
. Queste statistiche dovrebbero essere aggiornate manualmente su base regolare con un ANALYZE TABLE [table_name]