MySQLi - INDICI

Un indice di database è una struttura di dati che migliora la velocità delle operazioni in una tabella. Gli indici possono essere creati utilizzando una o più colonne, fornendo la base sia per rapide ricerche casuali che per un efficiente ordinamento dell'accesso ai record.

Durante la creazione dell'indice, è necessario considerare quali sono le colonne che verranno utilizzate per eseguire query SQL e creare uno o più indici su tali colonne.

In pratica, gli indici sono anche tipi di tabelle, che mantengono la chiave primaria o il campo indice e un puntatore a ciascun record nella tabella effettiva.

Gli utenti non possono vedere gli indici, vengono utilizzati solo per velocizzare le query e verranno utilizzati dal Motore di ricerca database per individuare i record molto velocemente.

Le istruzioni INSERT e UPDATE richiedono più tempo sulle tabelle con indici in cui le istruzioni SELECT diventano veloci su quelle tabelle. Il motivo è che durante l'inserimento o l'aggiornamento, il database deve inserire o aggiornare anche i valori dell'indice.

Indice semplice e unico

Puoi creare un indice univoco su una tabella. Un indice univoco significa che due righe non possono avere lo stesso valore di indice. Ecco la sintassi per creare un indice su una tabella.

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);

È possibile utilizzare una o più colonne per creare un indice. Ad esempio, possiamo creare un indice su tutorials_inf utilizzando NAME_INDEX.

CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf(name);

Puoi creare un semplice indice su una tabella. È sufficiente omettere la parola chiave UNIQUE dalla query per creare un indice semplice. L'indice semplice consente valori duplicati in una tabella.

Se vuoi indicizzare i valori in una colonna in ordine decrescente, puoi aggiungere la parola riservata DESC dopo il nome della colonna.

mysql> CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf (name DESC);

Comando ALTER per aggiungere e rilasciare INDEX

Esistono quattro tipi di istruzioni per l'aggiunta di indici a una tabella:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) - Questa istruzione aggiunge una PRIMARY KEY, il che significa che i valori indicizzati devono essere univoci e non possono essere NULL.

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) - Questa istruzione crea un indice per il quale i valori devono essere univoci (ad eccezione dei valori NULL, che possono apparire più volte).

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list) - Questo aggiunge un indice ordinario in cui qualsiasi valore può apparire più di una volta.

  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) - Questo crea uno speciale indice FULLTEXT che viene utilizzato per scopi di ricerca di testo.

Ecco l'esempio per aggiungere l'indice in una tabella esistente.

mysql> ALTER TABLE tutorials_inf ADD INDEX (id);

È possibile eliminare qualsiasi INDICE utilizzando la clausola DROP insieme al comando ALTER. Prova il seguente esempio per eliminare l'indice creato sopra.

mysql> ALTER TABLE tutorials_inf DROP INDEX (c);

È possibile eliminare qualsiasi INDICE utilizzando la clausola DROP insieme al comando ALTER. Prova il seguente esempio per eliminare l'indice creato sopra.

ALTER Comando per aggiungere e rilasciare PRIMARY KEY

Puoi anche aggiungere la chiave primaria allo stesso modo. Ma assicurati che la chiave primaria funzioni sulle colonne, che NON sono NULL.

Ecco l'esempio per aggiungere la chiave primaria in una tabella esistente. Questo renderà prima una colonna NOT NULL e poi la aggiungerà come chiave primaria.

mysql>  ALTER TABLE tutorials_inf MODIFY id INT NOT NULL;
mysql> ALTER TABLE tutorials_inf ADD PRIMARY KEY (id);

È possibile utilizzare il comando ALTER per rilasciare una chiave primaria come segue:

mysql> ALTER TABLE tutorials_inf DROP PRIMARY KEY;

Per eliminare un indice che non è una CHIAVE PRIMARIA, è necessario specificare il nome dell'indice.

Visualizzazione delle informazioni INDICE

È possibile utilizzare il comando SHOW INDEX per elencare tutti gli indici associati a una tabella. L'output in formato verticale (specificato da \ G) è spesso utile con questa istruzione, per evitare l'avvolgimento di righe lunghe

Prova il seguente esempio

mysql> SHOW INDEX FROM table_name\G
........