Corso MySQL – indici

mysql-logo

In questa lezione del corso MySQL vedremo cosa sono gli indici, a cosa servono e come si usano.

Database MySQL – Indici

La prima cosa che mi viene in mente pensando alla parola indice è l’indice di un libro. Ovvero quella parte del libro che permette di ricercare i vari argomenti e parole chiave. In un database MySQL un indice serve alla stessa cosa, permette di ricercare le informazioni più velocemente.

Supponiamo di voler fare una ricerca dei nostri dipendenti, ordinata per età. Abbiamo già visto che possiamo ottenere le informazioni che cerchiamo con la seguente SELECT:

La query di sopra va bene, fino a quando il database MySQL è di piccole dimensioni. Quando incominciano ad esserci qualche decina o qualche centinaio di migliaia di record, una ricerca del genere incomincia ad essere (relativamente) lenta. Avere i dati già preordinati riguardo al valore che stiamo cercando, velocizza notevolmente le ricerche all’interno del nostro database MySQL. Un indice serve esattamente a questo, fornisce un pre-ordinamento su uno o più campi (colonne) in modo da velocizzare le ricerche.

Database MySQL – Vantaggi degli indici

Un indice velocizza le ricerche su una tabella di un database MySQL. La maggiore velocità di ricerca si applica però solamente sulla colonna (o sulle colonne) che sono state indicizzate.

Se creo un indice sulla colonna età (eta), la maggior velocità di ricerca si avrà solamente sulle ricerche che vorranno un ordinamento sull’età (ORDER BY eta). Se chiederò un ordinamento in base allo stipendio (ORDER BY stipendio), l’indice creato sulla colonna età non comporterà alcun incremento nella velocità di ricerca.

Database MySQL – Svantaggi degli indici

Abbiamo visto che gli indici, in una tabella MySQL comportano una maggior velocità di ricerca. Tuttavia gli indici comportano anche alcuni piccoli svantaggi che dovrebbero farne limitare l’uso solamente sulle colonne con ricerche frequenti.

Il primo svantaggio è l’occupazione di memoria. Come l’indice di un libro occupa dello spazio (alcune pagine), così l’indice di una tabella di un database occupa dello spazio.

Non si tratta di una cosa enorme ma, nel caso di tabelle con decine o centinaia di migliaia di record, la quantità potrebbe non essere così piccola.

Il secondo svantaggio è che un indice velocizza le ricerche, ma rallenta leggermente l’inserimento dei dati nel database. Questo perché quando inseriamo dei dati, MySQL dovrà scrivere una nuova riga all’interno della tabella e in più anche una nuova riga all’interno dell’indice associato.

Anche in questo caso non si tratta di un rallentamento eccessivo, però comunque esiste.

Conclusioni sugli indici

L’uso degli indici velocizza notevolmente le ricerche su una tabella di un database MySQL. Questo a patto di scegliere con cura quali colonne indicizzare. La corretta scelta delle colonne dipende dal tipo di ricerche che si desidera effettuare e dalla frequenza di queste. Solo la conoscenza sullo scopo del database e l’esperienza potranno fornire le risposte corrette.

Tags:

About the Author

Post a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Top