English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Indici di SQLite

L'indice è una tabella di ricerca speciale che il motore di ricerca del database può utilizzare per accelerare la ricerca dei dati. In breve, anindexÈ un puntatore ai dati della tabella. Gli indici nei database sono molto simili agli indici alla fine di un libro.

Ad esempio, se si desidera citare tutte le pagine di un libro che trattano un argomento specifico, è necessario prima consultare l'indice, che elenca tutti gli argomenti in ordine alfabetico, e poi citare una o più pagine specifiche.

L'indice aiuta a velocizzare le query SELECT e le clausole WHERE, ma può rallentare la velocità di input dei dati attraverso le frasi SQL UPDATE e INSERT. È possibile creare o eliminare indici senza influenzare i dati.

Creare un indice implica l'uso della frase SQL CREATE INDEX, che ti permette di dare un nome all'indice, specificare la tabella e le colonne da indicizzare, e indicare se l'indice è in ordine crescente o decrescente.

L'indice può essere unico, simile alla restrizione UNIQUE, perché l'indice può prevenire la presenza di entry duplicate nelle colonne o combinazioni di colonne da indicizzare.

Comando CREATE INDEX

Ecco la sintassi di baseCREATE INDEX.

CREATE INDEX index_name ON table_name;

Indice a singola colonna

Un indice a singola colonna è un indice creato basato su una singola colonna del tavolo. La sintassi di base è la seguente-

CREATE INDEX index_name ON table_name (column_name);

Indice unico

Gli indici unici non solo migliorano le prestazioni, ma anche l'integrità dei dati. Gli indici unici non permettono di inserire valori duplicati nella tabella. La sintassi di base è la seguente-

CREATE UNIQUE INDEX index_name ON table_name (column_name);

Indice composto

Un indice composto è un indice su due o più colonne del tavolo. La sintassi di base è la seguente-

CREATE INDEX index_name ON table_name (column1, column2);

Sia che si crei un indice a singola colonna o un indice composto, è necessario considerare la colonna (o colonne) che potresti utilizzare frequentemente come condizione di filtro nella clausola WHERE della query.

Se si utilizza solo una colonna, è consigliabile scegliere un indice a singola colonna. Se le clausole WHERE utilizzano frequentemente due o più colonne come filtri, l'indice composto sarà la scelta migliore.

Indice implicito

Gli indici impliciti sono indici creati automaticamente dal server del database quando viene creato l'oggetto. Creano automaticamente indici per le restrizioni primarie e uniche.

Esempio

Ecco un esempio, creeremo un indice per la colonna stipendio nella tabella COMPANY:

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

Ora, usiamo il seguente.indicesIl comando elenca tutti gli indici disponibili nella tabella COMPANY:

sqlite> .indices COMPANY

Questo produrrà i seguenti risultati, tra cuisqlite_autoindex_COMPANY_1è un indice implicito,IlL'indice di tipo 'index' viene creato quando viene creato il tavolo stesso.

salary_indexsqlite_autoindex_COMPANY_1

Puoi elencare tutte le aree di database degli indici, come segue:

sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

Comando DROP INDEX

Puoi utilizzare SQLite DROPEsegui la cancellazione dell'indice. La cancellazione dell'indice deve essere eseguita con cautela, poiché la prestazione potrebbe rallentare o migliorare.

Di seguito è riportata la sintassi di base come segue -

DROP INDEX index_name;

Puoi utilizzare le seguenti istruzioni per eliminare gli indici creati in precedenza.

sqlite> DROP INDEX salary_index;

Quando evitare gli indici?

Nonostante gli indici siano progettati per migliorare le prestazioni del database, a volte è consigliabile evitarli. Le seguenti regole indicano quando è necessario rivalutare l'uso degli indici.

Gli indici non devono essere utilizzati per -

  • Tabelle piccole.

  • Tabelle con operazioni di aggiornamento o inserimento in lotti frequenti e massicce.

  • Colonne contenenti molti NULL.

  • Colonne spesso manipulate.