Sqlite crea indice

Sqlite crea indice

Un indice è uno strumento di dati specifico per l'organizzazione e l'ottimizzazione delle informazioni per un'intera colonna per la query. Gli indici (o gli indici) sono univoci per la ricerca del database in quanto consentono di individuare determinate righe in un record senza bisogno di scansionare l'intera tabella. Di conseguenza, gli indici possono dare ad alcune operazioni un significativo guadagno delle prestazioni. Gli indici sono generalmente collegati con una singola tabella, sebbene possano comprendere diverse colonne di quella tabella.

Pertanto, abbiamo deciso di coprire l'argomento degli indici utilizzati in SQLite in questo articolo oggi. Iniziamo con il database SQLite sul nostro terminale appena lanciato. Per questo, prova il comando a una parola nell'area di query, io.e., "SQLite3". Verrà lanciata la console shell SQLite, come mostrato di seguito:

Dopo aver lanciato la shell SQLite, abbiamo usato il “.tabelle "Istruzioni sulla sua shell per visualizzare tutte le tabelle già realizzate del nostro database.

Pertanto, abbiamo bisogno di almeno una tabella nel nostro database per creare indici sulle sue colonne. Quindi, stiamo provando l'istruzione Crea Table che creerà una tabella denominata "Informazioni". Questa tabella conterrà un totale di tre colonne al suo interno. La colonna ID e la colonna di età saranno di tipo intero, mentre la colonna ID verrà utilizzata come chiave primaria di questa tabella. La colonna Nome sarà di tipo di testo. La tabella è stata creata correttamente e abbiamo provato l'istruzione selezionata per recuperare tutti i suoi record. Sfortunatamente, non ci sono record nella tabella finora.

sqlite> create tabella info (id int primario chiave, testo nome, età int);
sqlite> seleziona * da informazioni;
sqlite>.tavoli

Iniziamo a inserire diversi record nelle informazioni sulla tabella utilizzando l'inserto nelle istruzioni del database SQLite. Per questo, è necessario specificare i nomi delle colonne della tabella utilizzate per inserire i record, i.e., Id, nome ed età. I nomi delle colonne saranno seguiti dalla parola chiave "valori" usando i valori all'interno delle parentesi. Abbiamo aggiunto cinque record all'interno della tabella "Informazioni".

SQLite> Inserisci in Info (ID, Nome, Age) Valori (1, "Bella", 34);
SQLite> Inserisci in informazioni (id, nome, età) (2, "Bella", 23);
SQLite> Insert in Info (ID, Nome, Age) Valori (3, "George", 26);
SQLite> Inserisci in informazioni (id, nome, età) (4, "George", 29);
SQLite> Inserisci in informazioni (id, nome, età) (5, "EMA", 30);

Successivamente, abbiamo usato l'istruzione selezionata per visualizzare tutti i record appena inseriti delle informazioni sulla tabella. I cinque record per l'ID, il nome e l'età di una tabella sono stati visualizzati sulla shell.

sqlite> seleziona * da informazioni;

Come tutti sappiamo, la colonna ID della tabella "Info" è già specificata come una chiave primaria. Pertanto, controlleremo come un vincolo chiave primario reagirà all'inserimento del valore duplicato. Quindi, abbiamo usato l'inserto in istruzione per inserire nuovi record all'interno della tabella "Info", mentre il valore per la colonna "ID" è 5, i.e., ripetuto. L'esecuzione di questa affermazione porta all'errore "vincolo univoco non riuscito: informazioni.ID". Ciò significa che non possiamo aggiungere un valore duplicato per la colonna "ID".

SQLite> Insert in Info (ID, Nome, Age) Valori (5, "Tom", 35);

Singolo indice

Creiamo un singolo indice su una colonna particolare di una tabella delle informazioni. Per questo, è necessario utilizzare le istruzioni dell'indice Crea seguito dal nome di un indice da creare, i.e., age_index, la parola chiave "on", il nome di una tabella, i.e., "Informazioni" seguite dal nome della colonna, i.e., "Age" su cui applicheremo l'indice. Dopo aver creato un indice "age_index" per la colonna "età", abbiamo inserito il nuovo record all'interno delle informazioni sulla tabella usando l'inserto nell'istruzione. Abbiamo ripetuto il valore per la colonna "età" in questa istruzione, io.e., 30. Dopo aver cercato tutti i record di una tabella "Informazioni", abbiamo i seguenti record:

sqlite> crea indice age_index su info (età);
SQLite> Insert in Info (ID, Nome, Age) Valori (6, "EMA", 30);
sqlite> seleziona * da informazioni;

La stessa cosa è stata fatta per la colonna "nome", io.e., ha creato un indice "name_index". Successivamente, abbiamo inserito il record duplicato per la colonna "Nome" usando l'inserto nelle istruzioni e visualizzato tutti i record della tabella "Info".

SQLite> Crea indice name_index su info (nome);
SQLite> Insert in Info (ID, Nome, Age) Valori (7, "EMA", 20);
sqlite> seleziona * da informazioni;

È possibile elencare tutti gli indici appena creati del tuo database utilizzando ".Istruzioni indici "insieme al nome particolare di una tabella," info ", che contiene o utilizza tali indici.

sqlite> .Informazioni degli indici

Indice composito

Se si crea un indice per più di una colonna di una tabella specifica, si dice che sia l'indice composito. Quindi, abbiamo creato un indice composito "comp_index" per il nome e l'età delle colonne di una tabella "info" utilizzando l'istruzione Crea indice visualizzata nell'immagine. Quando abbiamo provato a inserire record duplicati all'interno del nome e della colonna di età della tabella "Informazioni" con l'inserimento nell'istruzione, ha restituito l'errore "vincolo univoco non riuscito".

sqlite> crea indice comp_index su info (nome, età);
SQLite> Insert in Info (ID, Nome, Age) Valori (7, "Bella", 23);

In genere, gli indici offrono la possibilità di creare voci duplicate. Tuttavia, la parola chiave univoca impedisce che i valori ripetuti vengano inseriti o aggiornati in un record con una voce non unica. Un indice univoco potrebbe non vietare uno o ulteriori null poiché Null non è considerato un valore. Non NULL dovrebbe essere specificato nella dichiarazione della tabella iniziale per evitare nulls. Creiamo un indice univoco sulla colonna "ID" di una tabella Informazioni con l'istruzione Crea Indice. Abbiamo sette record per la tabella "informazioni" di questo database. Quindi, abbiamo provato l'inserto in istruzione per aggiungere il valore duplicato per la colonna ID di una tabella. Ha restituito lo stesso errore di "vincolo univoco non riuscito" sullo schermo.

sqlite> crea indice univoco uindex su info (id);
sqlite> seleziona * da informazioni;
SQLite> Insert in Info (ID, Nome, Age) Valori (7, "Ana", 19);

Creiamo una nuova tabella, "test", con due colonne ID ed età, senza chiavi primarie. Successivamente, abbiamo creato un indice univoco, "univoco_index", su entrambe le sue colonne e aggiunto due record univoci e un record duplicato con l'inserto nell'istruzione. Il terzo record lancia un errore perché i valori di entrambe le colonne sono stati ripetuti.

sqlite> Crea test table (id int, età int);
sqlite> Crea indice univoco univoco_index su test (id, età);
SQLite> Inserisci nei valori Test (ID, Age) (1, 23);
SQLite> Inserisci nei valori di test (ID, età) (2, 24);
SQLite> Inserisci nei valori di test (ID, età) (2, 24);

Conclusione:

Questo articolo riguardava l'uso di diversi indici delle colonne della tabella. Abbiamo discusso degli usi degli indici e abbiamo cercato di creare indici singoli, compositi e univoci su diverse colonne della tabella con l'istruzione Crea Index alla nostra fine.