- 1 1. Cos’è un indice MySQL? La chiave per migliorare le prestazioni del database
- 2 2. Metodi di base per verificare gli indici in MySQL
- 3 3. Verifica degli indici usando la tabella INFORMATION_SCHEMA.STATISTICS
- 4 4. Come aggiungere e rimuovere gli indici e il loro impatto
- 5 5. Verifica delle prestazioni degli indici usando l’istruzione EXPLAIN
- 6 6. Conclusione
1. Cos’è un indice MySQL? La chiave per migliorare le prestazioni del database
Utilizzando efficacemente gli indici in un database MySQL, è possibile migliorare significativamente le prestazioni delle query. Un indice è una struttura dati creata su colonne specifiche di una tabella del database per aumentare la velocità di ricerca e filtraggio. Ad esempio, quando si estrae informazioni specifiche da un grande set di dati, l’uso di un indice consente a MySQL di saltare la scansione di tutte le righe e di cercare solo nella colonna indicizzata.
Ruoli e tipi di indici
MySQL fornisce i seguenti tipi di indici:
- PRIMARY (Chiave primaria) : Una chiave unica consentita una sola volta per tabella, usata come identificatore principale della tabella.
- Indice UNIQUE : Un indice che impone l’unicità e impedisce l’inserimento di valori duplicati nella colonna specificata.
- Indice regolare : Un indice senza vincolo di unicità, usato per migliorare le prestazioni di ricerca su colonne specifiche.
Come mostrato sopra, gli indici migliorano l’efficienza delle ricerche e delle operazioni sui dati nelle tabelle e sono essenziali per grandi set di dati. Tuttavia, avere troppi indici può rallentare le operazioni INSERT e UPDATE, quindi una corretta gestione degli indici è importante.
2. Metodi di base per verificare gli indici in MySQL
In MySQL, è possibile utilizzare il comando SHOW INDEX per verificare gli indici esistenti. Questo semplice comando SQL visualizza le informazioni sugli indici per una tabella specificata. La procedura specifica è spiegata di seguito.
Sintassi di base e output di SHOW INDEX
SHOW INDEX FROM table_name;
Spiegazione delle colonne di output
Quando esegui questo comando, vengono visualizzate le seguenti informazioni:
- Table : Il nome della tabella in cui l’indice esiste
- Non_unique : Indica se l’indice consente duplicati (1) o è unico (0)
- Key_name : Il nome dell’indice
- Column_name : Il nome della colonna a cui è applicato l’indice
- Cardinality : Una stima del numero di valori unici nell’indice. Viene usata come indicatore dell’efficienza di ricerca.
Utilizzando queste informazioni, è possibile comprendere visivamente lo stato degli indici all’interno di una tabella e come gli indici sono applicati a ciascuna colonna. È inoltre possibile restringere i risultati usando una clausola WHERE, se necessario.
3. Verifica degli indici usando la tabella INFORMATION_SCHEMA.STATISTICS
Oltre all’istruzione SHOW INDEX, MySQL consente di verificare gli indici interrogando la tabella INFORMATION_SCHEMA.STATISTICS. Questo metodo è utile per elencare gli indici su un intero database e fornisce informazioni più dettagliate.
Query di base per INFORMATION_SCHEMA.STATISTICS
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'database_name';
Dettagli del risultato della query
- TABLE_SCHEMA : Il nome del database a cui appartiene l’indice
- TABLE_NAME : Il nome della tabella in cui l’indice esiste
- COLUMN_NAME : Il nome della colonna a cui è applicato l’indice
- INDEX_NAME : Il nome dell’indice
Questo metodo consente di visualizzare le informazioni sugli indici su più tabelle o su un database specifico in un unico elenco. È particolarmente utile quando si gestiscono gli indici su un intero database.

4. Come aggiungere e rimuovere gli indici e il loro impatto
Come aggiungere un indice
È possibile aggiungere indici in seguito, secondo necessità. Usa il comando seguente per creare un indice su una colonna specificata:
CREATE INDEX index_name ON table_name(column_name);
Ad esempio, se vuoi aggiungere un indice alla colonna email della tabella users, esegui il seguente comando:
CREATE INDEX idx_email ON users(email);
Come rimuovere un indice
Puoi rimuovere gli indici non necessari per ottimizzare le prestazioni di INSERT e UPDATE. Usa il comando DROP INDEX per eliminare un indice:
DROP INDEX index_name ON table_name;
Un esempio di indice non necessario è quello creato su una colonna che non viene utilizzata nelle condizioni di ricerca (clausole WHERE). Rimuovere tali indici può migliorare la velocità di inserimento e aggiornamento dei dati.
5. Verifica delle prestazioni degli indici usando l’istruzione EXPLAIN
L’istruzione EXPLAIN di MySQL è utile per verificare il piano di esecuzione della query e identificare quali indici vengono utilizzati. Questo aiuta a valutare l’efficacia degli indici e a ottimizzare le prestazioni quando necessario.
Uso base dell’istruzione EXPLAIN
EXPLAIN SELECT * FROM table_name WHERE column_name = 'condition';
Utilizzando questo comando, è possibile determinare se un indice viene utilizzato o se viene eseguita una scansione completa della tabella. Il risultato include le seguenti colonne:
- type : Il tipo di query (ALL indica una scansione completa della tabella; INDEX indica che viene utilizzato un indice)
- possible_keys : Un elenco di indici che potrebbero essere utilizzati per la query
- key : Il nome dell’indice effettivamente utilizzato
- rows : Il numero stimato di righe scansionate
Sulla base di queste informazioni, è possibile analizzare l’efficacia degli indici e determinare se sono necessari miglioramenti delle prestazioni di ricerca.
6. Conclusione
Una corretta gestione degli indici è essenziale per ottimizzare le prestazioni del database MySQL. In particolare per le tabelle che gestiscono grandi volumi di dati, impostare indici sulle colonne utilizzate nelle clausole WHERE e nelle operazioni JOIN può migliorare notevolmente l’efficienza della ricerca. Tuttavia, avere troppi indici può rallentare le operazioni di inserimento e aggiornamento, quindi è importante mantenere un equilibrio adeguato.
Comprendendo come aggiungere, verificare, rimuovere e valutare gli indici, è possibile ottimizzare il proprio database più facilmente e migliorare l’efficienza complessiva del sistema.

