This is a read-only copy of the MariaDB Knowledgebase generated on 2024-11-21. For the latest, interactive version please visit https://mariadb.com/kb/.

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.

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.