SQLite Show indici

SQLite Show indici
“Un indice è un tipo di struttura dei dati che integra e ottimizza i valori di una colonna (o colonne) per la ricerca. Gli indici (o gli indici) sono univoci per le ricerche di database in quanto consentono di individuare determinate righe in una tabella senza scansionare l'intera tabella. Di conseguenza, gli indici possono migliorare significativamente le prestazioni di alcune domande. Gli indici sono sempre associati a una singola tabella; Tuttavia, possono comprendere molte colonne dalla tabella.Normalmente, gli indici consentono valori duplicati; Tuttavia, la parola chiave univoca impedisce che i valori duplicati vengano inseriti o aggiornati in una tabella con un valore non univoco. Poiché Null non è considerato un valore, un indice univoco non impedirà a uno o più null di apparire. È necessario specificare non null nella definizione della tabella iniziale per evitare nulls.

Quando si lascia cadere un indice, viene rimosso dal database, ma la tabella a cui è associata non è interessata.

Con un esempio, impareremo quali sono gli indici in SQLite, come impostare gli indici su singole o molte colonne in SQLite e come rimuovere o rilasciare gli indici SQLite; Quindi, discuteremo di come mostrarli in sqlite."

Sintassi degli indici SQLite

Crea [univoco] indice [se non esiste] index_name su table_name (colonne… n);

L'istruzione Create Index viene utilizzata nella sintassi sopra per creare un nuovo indice; Il nome dell'indice fornito si riferisce a un nome indice specifico che dobbiamo generare. Le parole chiave e l'indice sono parole chiave e la tabella specificata si riferisce a una tabella esistente con un nome di colonna.

Se abbiamo più di un campo e che i dati devono essere definiti in modo univoco in modo da poter utilizzare la parola chiave univoca, possiamo usare la parola chiave unica; Una clausola unica è un componente opzionale di questa sintassi.

Punti chiave dell'indice SQLite

  • L'uso di un indice accelera le ricerche selezionate e dove le clausole; Tuttavia, decelera l'input dei dati nelle operazioni di aggiornamento e inserire. Non vi è alcuna influenza sui dati quando vengono creati o eliminati gli indici.
  • Un indice viene creato con l'istruzione Crea indice. Ti consente di nominare l'indice, fornire la tabella e quale indice di colonne o colonne e definire se l'indice deve essere in ordine crescente o decrescente.
  • Gli indici sono anche univoci, allo stesso modo in cui il vincolo univoco proibisce i record duplicati nella colonna o nella raccolta di colonne su cui viene creato l'indice.

Come funzionano gli indici in sqlite

Una tabella specifica deve essere connessa con ciascun indice. Un indice può includere uno o anche più campi, ma devono essere tutti nella stessa tabella. Diversi indici possono essere trovati in una tabella.

SQLite fornisce una struttura b-albero per archiviare i dati dell'indice ogni volta che si aggiunge un indice. Gli indici in SQLite sono organizzati usando il metodo B-Tree. L'albero B è un albero equilibrato piuttosto che un albero binario, poiché la B sta per bilanciata.

L'indice comprende i valori delle colonne che abbiamo definito nell'indice, nonché il valore row_id per ciascuna di queste colonne. SQLite può ora individuare rapidamente la riga usando le voci dei campi indicizzati.

Immagina un indice di database simile a un indice di libro. Potremmo individuare rapidamente diverse pagine in base alle parole chiave cercando tramite l'indice.

Quando non dovrebbero essere utilizzati gli indici?

Sebbene gli indici siano pensati per migliorare l'efficienza del database, ci sono situazioni in cui dovrebbero essere ignorati. Quando dovrebbe essere utilizzato un indice? I seguenti fattori possono aiutarti a prendere la tua decisione.

Non è consigliabile utilizzare gli indici in:

  • Tavoli con una piccola impronta
  • Tabelle che vengono aggiornate o inserite frequentemente in grandi lotti.
  • Colonne null-pesanti.
  • Colonne frequentemente modificate.

Esempio 1

Innanzitutto, dobbiamo costruire la tabella per vedere i suoi indici. Abbiamo mostrato una tabella di seguito, che abbiamo creato con il comando Crea in sqlite e anche i campi definiti di questa tabella.

Crea table Story_Books (
Book_id int Key primario ,
book_name char (10) ,
book_price flaot
);

Ora abbiamo creato un indice di una singola colonna. Un indice a una colonna è costruito attorno a una singola colonna di database. Possiamo passare più colonne alla volta per creare indici di una tabella particolare. Abbiamo dato un nome a nome singolo Book_name dalla tabella Story_Books nella seguente query.

# Crea indice IDX_STORY_BOOKS_BOOK ON STORY_BOOKS (book_name);

Usando il .Metodo degli indici, l'indice creato nella tabella è visualizzabile come segue:

Gli indici univoci sono utilizzati per l'integrità dei dati e per le prestazioni. Un indice univoco impedisce l'inserimento di valori duplicati nella tabella. Utilizzando la seguente query, abbiamo creato un indice univoco sulla colonna Book_id di Story_Book Table.

Crea indice univoco idx_book_id
Su Story_Books (book_id);

L'output mostra che l'indice è stato creato correttamente.

Abbiamo creato un indice selettivo su una tabella Story_Book includendo solo una parte dei record nell'indice. Dato che abbiamo usato una clausola dove, solo quei record in cui il libro_price non è null ottiene un indice parziale. I record con un valore null per book_name non faranno parte dell'indice.

Crea indice IDX_BOOK_PRICE
On Story_Books (book_price)
Dove book_price non è nullo;

Quando si esegue il .comando indici, mostra gli indici nella tabella. Come puoi vedere, quell'indice Book_price è incluso.

Esempio 2

Il comando Drop di SQLite viene utilizzato per rimuovere un indice. La caduta di un indice dovrebbe essere eseguita con cautela perché la funzionalità può essere influenzata. Qui, con il comando drop, abbiamo una clausola se esiste. Se l'indice scelto non esiste, non verrà generata eccezione. Non è obbligatorio utilizzare la clausola IF esiste; Possiamo saltare questo e semplicemente cadere il tavolo. Abbiamo lasciato cadere l'indice book_name dalla tabella Story_Book dalla seguente query.

Drop Index Se esiste IDX_STORY_BOOKS_BOOK_NAME;

L'indice con la colonna book_name viene eliminato come mostrato nella shell.

Esempio 3

Abbiamo usato la tabella sqlite_master invece di usare il .comando indici. Sebbene questa tabella contenga più dei semplici indici, è possibile utilizzare la clausola Where per limitarla agli indici.

SELEZIONARE
Nome, tbl_name
...> da sqlite_master
…> Dove type = 'indice';

Abbiamo la tabella a cui corrisponde ogni indice. La colonna TBL_name tiene traccia di questo come segue.

Conclusione

In questa sezione, abbiamo superato le basi per stabilire un indice in SQLite e discutere su come mostrare quegli indici in SQLite con alcuni esempi. Questi esempi sono facili da usare e anche i modi che mostrano gli indici in SQLite. Quando leggi l'intero articolo, potresti essere estremamente chiaro.