MySQL - 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 prendere in considerazione quali colonne verranno utilizzate per eseguire query SQL e creare uno o più indici su tali colonne.
In pratica, gli indici sono anche un tipo 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, mentre le istruzioni SELECT diventano veloci su quelle tabelle. Il motivo è che durante l'inserimento o l'aggiornamento, un 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_tbl utilizzando tutorial_author.
CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)
Puoi creare un semplice indice su una tabella. Basta omettere il fileUNIQUEparola chiave dalla query per creare un semplice indice. Un 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 AUTHOR_INDEX ON tutorials_tbl (tutorial_author 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 dichiarazione aggiunge un file 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.
Il seguente blocco di codice è un esempio per aggiungere un indice in una tabella esistente.
mysql> ALTER TABLE testalter_tbl ADD INDEX (c);
Puoi eliminare qualsiasi INDICE utilizzando il file DROP clausola insieme al comando ALTER.
Prova il seguente esempio per eliminare l'indice creato sopra.
mysql> ALTER TABLE testalter_tbl DROP INDEX (c);
È possibile eliminare qualsiasi INDICE utilizzando la clausola DROP insieme al comando ALTER.
ALTER Comando per aggiungere e rilasciare la CHIAVE PRIMARIA
Puoi anche aggiungere una chiave primaria allo stesso modo. Ma assicurati che la chiave primaria funzioni su colonne, che NON sono NULL.
Il seguente blocco di codice è un 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 testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
È possibile utilizzare il comando ALTER per rilasciare una chiave primaria come segue:
mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
Per eliminare un indice che non è una CHIAVE PRIMARIA, è necessario specificare il nome dell'indice.
Visualizzazione delle informazioni INDICE
Puoi usare il file SHOW INDEXcomando per elencare tutti gli indici associati a una tabella. L'output in formato verticale (specificato da \ G) è spesso utile con questa istruzione, per evitare un avvolgimento lungo la riga -
Prova il seguente esempio:
mysql> SHOW INDEX FROM table_name\G
........