Guida base sugli indici
In generale si creano gli indici che corrispondono alle query utilizzate dalle applicazioni, aggiungerne altri è uno spreco di risorse. In una applicazione con tabelle molto piccole gli indici non fanno molta differenza, ma appena le tabelle diventano più grandi delle dimensioni del buffer gli indici cominciano a incrementare notevolmente la velocità.
Quando aggiungere un indice
In genere si aggiunge un indice:
- quando eseguendo EXPLAIN si vede che nessun indice è applicabile. SI NOTI che questo potrebbe accadere perché MySQL ha deciso di effettuare una scansione completa della tabella, nel qual caso l'indice non servirà;
- quando si deve cercare spesso una parola in un campo utilizzando
LIKE '%word%'
. Se non c'è un indice fulltext, ogni volta verrà eseguita una scansione della tabella, che può essere molto lenta.
Se vi è un numero elevato di letture e scritture, si consideri la possibilità di usare le scritture ritardate. In tal modo si avranno delle operazioni di scrittura in modalità programmata, che riduce l'io sul disco, migliorando perciò le prestazioni.
Per creare un indice si usa il comando CREATE INDEX.
Se si crea una grande tabella, è più rapido creare l'indice solo dopo aver popolato la tabella con i dati. Così le insert saranno più veloci e si elimina il ritardo dovuto alla scrittura degli indici.
Quando rimuovere un indice
Se un indice viene usato raramente (o non viene utilizzato affatto) è meglio rimuoverlo per migliorare le prestazioni di INSERT e UPDATE.
La versione iniziale di questo articolo è stata copiata, con permesso, da http://hashmysql.org/wiki/Proper_Indexing_Strategy in data 2012-10-30.