CHE COS'È L'INDICE DEL DATABASE: Come funziona e cosa fa?

indice di database SQL l'importanza di un indice di database tipi di indici

L'indicizzazione del database SQL è il processo di categorizzazione e organizzazione dei record di dati. Chiunque lavori con un database apprezzerebbe il risparmio di tempo che questa funzionalità offre durante la ricerca di dati specifici. In questo articolo, abbiamo esplorato la definizione di un indice di database SQL, i tipi e l'importanza di un indice di database. Godetevi il viaggio!

Cos'è l'indice del database?

Gli indici di database sono strutture di dati che facilitano ricerche di tabelle più veloci. Il database continuerà a funzionare senza indici, ma potrebbe essere necessario più tempo prima che le query restituiscano risultati. Ogni indice contiene una chiave composta dai dati di una o più colonne nella tabella corrispondente. Il database può scegliere di utilizzare un indice per velocizzare il recupero dei record quando una query richiede l'accesso a una tabella con un indice.

Quando un utente inserisce una query, la query in genere esegue una ricerca lineare su ogni riga, controllando se qualcuna di esse contiene le informazioni desiderate. Questo è semplificato con l'uso di un indice, che aumenta la produttività perché riduce il tempo necessario per completare le attività.

Tipi di indici di database

Esistono diversi tipi di indici di database. Ecco i tipi di indici di database:

#1. Indice primario in DBMS

L'indice del database primario è un file a due campi, ordinato e di lunghezza fissa. Il primo campo funge da chiave primaria e il secondo campo indica quale blocco di dati contiene le informazioni specificate. Esiste sempre una corrispondenza uno a uno tra le voci dell'indice del database primario. Esistono due tipi distinti di indicizzazione principale utilizzati in DBMS.

  • Indice denso
  • Indice sparse

#2. Indice secondario in DBMS

Una chiave candidata in un sistema di gestione del database (DBMS) è un campo che ha un valore univoco per ogni voce. È un tipo di indice che non raggruppa i dati in cluster. Questo metodo di indicizzazione di un database su due livelli viene utilizzato per ridurre al minimo la dimensione del livello di mappatura iniziale. Per questo motivo, per la fase iniziale viene scelta un'ampia gamma di numeri interi, mentre la dimensione stessa della mappatura rimane fissamente modesta.

Cosa fa l'indicizzazione?

L'inserimento di una tabella non ordinata in un ordine che migliora l'efficienza della ricerca tramite query viene ottenuto mediante l'indicizzazione. Le tabelle non indicizzate richiedono una ricerca lineare tra le righe perché la query non può conoscere l'ordine delle righe e ottimizzarsi di conseguenza. Vale a dire, le query dovranno esaminare ogni riga per trovare quelle che soddisfano i criteri. Questo può, come puoi aspettarti, richiedere del tempo. 

Come funziona l'indice del database?

Non è pratico aspettarsi che la tabella del database si riorganizzi ogni volta che le circostanze della query cambiano per migliorare le prestazioni della query. In realtà, ciò che accade è che il database crea un file struttura dati in risposta all'indice. Un B-Tree è probabilmente il tipo di struttura dati utilizzata. Il B-Tree ha diversi vantaggi, ma il fatto che possa essere facilmente ordinato è il più importante per le nostre esigenze. A causa di quanto sopra, non dovrebbe sorprendere che una struttura di dati ordinata migliori l'efficacia della nostra ricerca.

Si noti che quando l'indice del database crea una struttura per una data colonna, memorizza solo le informazioni su quella colonna; non sono incluse altre colonne. 

Puoi anche leggere:

Suggerimenti per la creazione di un indice del database

Di seguito sono riportati i suggerimenti per creare un indice di database:

#1. Indice in base al carico di lavoro

È possibile creare un indice di database efficiente in risposta al volume di dati elaborati. Invece di basare il processo di creazione dell'indice sul numero di tabelle di cui disponi (il che può rendere più difficile l'accesso), concentrati sulla creazione di un indice del database che faciliti la ricerca di determinati termini.

#2. Dovresti usare i predicati

La creazione di un indice di database con predicati è un'altra opzione praticabile. Un predicato è una sorta di espressione condizionale usata per determinare il valore di verità di un'affermazione. Oltre a semplificare lo sviluppo di un indice di database, questo aiuta l'utente a fare scelte ponderate sui dati da recuperare.

Per trovare gli strumenti e le forniture necessarie per un progetto di costruzione, un database progettato per quel settore potrebbe utilizzare i predicati nel suo indice. Un dipendente potrebbe utilizzarlo per verificare se gli stessi materiali sono stati impiegati o meno in un progetto simile qualche mese prima.

Un indice su misura per le query SQL dell'indice di database più popolari è anche comunemente costruito per un'efficienza ottimale. Incluso in questo potrebbe esserci un riepilogo di tutte le possibili query SQL dell'indice del database e della loro frequenza di utilizzo stimata, con quelle più cruciali evidenziate.

Ciò potrebbe essere utile quando una scuola deve condurre una ricerca standard in un database, ad esempio scoprire quali bambini sono stati chiamati a casa più spesso o quali sono stati assenti per un lungo periodo di tempo a causa di una malattia. Ciò è utile in caso di emergenza, poiché facilita il recupero rapido e semplice delle informazioni di contatto dei genitori.

#4. Evita la necessità di ordinare creando un indice

La creazione di un indice che non richieda l'ordinamento può velocizzare la capacità di una query di recuperare i dati desiderati. Un utente del database può spesso ordinare manualmente i record utilizzando le clausole "Raggruppa per" e "Ordina per". È possibile ottimizzare la velocità del database costruendo un indice sulle colonne utilizzate da questi due tipi. Poiché non è necessario alcun ordinamento dei record, le query possono essere ulteriormente ottimizzate.

#5. Crea indici unici nel loro genere

I dipendenti hanno spesso il compito di creare una serie di indici unici durante lo sviluppo di un database efficace. Questo è fondamentale perché previene il danneggiamento dei dati eliminando la possibilità di duplicati all'interno delle colonne di una tabella. I vincoli, o le regole che i dati in una tabella dovrebbero sempre seguire, vengono utilizzati dalla stragrande maggioranza dei sistemi di database per generare indici univoci. Viene utilizzata anche una chiave primaria per facilitare l'identificazione dei dati all'interno di una tabella.

#6. Considera le chiavi esterne

Un dipendente può ottimizzare le prestazioni del database creando indici relativi a ciascuna chiave esterna utilizzata dal database. Le chiavi esterne sono un gruppo di colonne in un database che forniscono l'accesso alle tabelle in un altro database. Questi indici non sono richiesti nella maggior parte dei sistemi di database, ma possono comunque aumentare la produttività. Il database potrebbe non contenere tutte le informazioni di cui un dipendente ha bisogno, ma questa chiave potrebbe portarlo al risultato corretto in un altro database.

#7. Inserisci colonne esclusivamente per l'uso dell'indice del database

Un dipendente può trovare utile aggiungere diverse colonne di solo indice del database al proprio database in determinate circostanze. Un lavoratore può ora recuperare rapidamente informazioni solo indice. In questo modo qualsiasi query inserita dall'utente dovrà cercare solo all'interno di queste colonne di indice appena aggiunte. Ciò accelera il processo di fornitura dei dati specifici di cui un dipendente ha bisogno. Ma va notato che il lavoratore deve ora controllare le altre query per vedere se le nuove colonne influiranno sulla sua capacità di svolgere il proprio lavoro.

#8. Evitare un limite al numero di indici

Si consiglia di non limitare il numero di indici in un database durante la creazione. Per ottimizzare correttamente un database, è preferibile avere quanti più indici possibili perché ogni indice funge da ottimizzatore che velocizza il processo di recupero dei dati. Vale la pena notare che questo non è solo utile per la persona in questione; nella maggior parte dei luoghi di lavoro, i database e le informazioni in essi contenuti vengono condivisi con i dipendenti. Ciò significa che ha il potenziale per aumentare la produzione in un'organizzazione.

#9. Controlla se ci sono molte implicazioni sulla modifica dei dati

Per risparmiare tempo, un lavoratore può preferire evitare di inserire i dati manualmente. Possono raggiungere questo obiettivo riflettendo sui risultati di eventuali modifiche apportate ai dati. Esistono alcune opzioni per realizzare questo. Un dipendente, ad esempio, potrebbe guardare gli indici della tabella. C'è una buona possibilità che l'aggiunta di un altro indice del database non influisca in modo significativo sulle prestazioni se sono già presenti più indici che colonne. Un dipendente può anche controllare il tempo di esecuzione di una query eseguendola sulla tabella. Il valore della creazione di un indice del database dipende dal tempo necessario per eseguire la query.

Se un lavoratore deve aggiungere o rimuovere dati per generare i propri indici, può farlo dopo aver considerato l'impatto sul resto del database. Sarebbe sciocco, ad esempio, eliminare i numeri di telefono che collegano l'azienda a un dipendente specifico se il database è pieno di dettagli di contatto per i fornitori.

Come funziona internamente un indice di database

L'indice del database SQL è strutturato internamente come alberi. Gli indici dei database sono rappresentati graficamente come alberi, con singoli record che sostituiscono le foglie. Più nodi collegati da puntatori costituiscono la struttura dell'albero degli indici di un database.

Quando viene eseguito il comando CREATE INDEX, viene generato un albero indice. Un algoritmo nel programma di database è responsabile della creazione dell'albero degli indici. La procedura di costruzione dell'indice inizia con un passaggio per ordinare i record in base alla chiave dell'indice. Una volta creati tutti i nodi nell'indice dell'albero, la struttura viene costruita sopra di essi. Quando sono presenti molti record in un database, la creazione di un albero indice potrebbe richiedere molto tempo.

Per trovare una riga specifica nella tabella, dobbiamo iniziare la nostra ricerca nell'indice dal nodo foglia. Ad ogni bivio, bisogna scegliere quale strada prendere. Ciò richiede un'analisi approfondita dei criteri di ricerca e dei valori che ricadono all'interno di ogni fork. Prendi il caso della ricerca del numero 12 in un albero a due rami come illustrazione molto semplice. Le cifre da 0 a 10 si trovano nel ramo X, mentre le cifre da 11 a 20 si trovano nel ramo Y. Dato che 12 è maggiore di 11, dovresti guardare lì.

Il B-tree è un esempio di un albero indice specializzato. Gli alberi bilanciati, o alberi B, hanno lo stesso numero di nodi dalla radice a ciascun nodo foglia.

Come funziona un indice di database sotto il cofano

Un indice è solo una struttura di dati che fornisce un facile accesso alle informazioni rilevanti memorizzando i riferimenti a singoli elementi. In assenza di un indice, le righe di dati in un database sono spesso conservate in un "heap" non organizzato. Microsoft SQL Server e il database SQL di Azure dispongono entrambi di un'opzione che è possibile usare per abilitare o disabilitare questa funzionalità.

In realtà, i dati raramente vengono mantenuti in uno stato completamente non strutturato. Le chiavi primarie, che in MySQL possono essere le stesse degli indici, sono invece tipicamente utilizzate; potrebbero assumere la forma di un numero intero a incremento automatico. Tuttavia, l'efficienza "binaria" dell'ordinamento (con valori univoci) è limitata a una query che filtra sulla colonna ordinata, poiché è possibile utilizzare solo una colonna per ordinare i dati. Una tabella con un indice può essere cercata in modo efficiente utilizzando la ricerca binaria poiché può essere ordinata per molte colonne.

Quando indicizzi una colonna, crei davvero una nuova tabella con due colonne: la colonna che hai indicizzato e un puntatore alla posizione dell'elemento che stai cercando. L'indice avrà la stessa lunghezza della tabella originale, ma la sua ampiezza sarà notevolmente inferiore, richiedendo meno blocchi di disco da memorizzare e attraversare. In MySQL, i puntatori tendono ad avere una dimensione inferiore a 5 byte. Per coloro che sono interessati ad approfondire, il "leggendario" post Stack Overflow a cui si fa riferimento sopra spiega l'aritmetica alla base del numero necessario di blocchi per l'archiviazione.

A meno che tu non li abbia costruiti da zero, il tuo attuale database ha probabilmente numerosi indici.

Importanza di un indice di database

L'importanza di un indice di database non può mai essere trascurata, ma comporta costi sotto forma di scritture extra e la necessità di spazio di archiviazione aggiuntivo per mantenere aggiornata la copia duplicata dei dati. Un'altra importanza di un indice di database è che richiedono una manutenzione regolare per garantire prestazioni ottimali. Tuttavia, i vantaggi dell'utilizzo degli indici superano di gran lunga i piccoli inconvenienti della loro manutenzione. Gli indici necessitano di una manutenzione regolare per funzionare correttamente. Le ricostruzioni degli indici, le riorganizzazioni ei controlli per la frammentazione rientrano in questa categoria di attività.

Il costo di avere indici

Come la maggior parte delle cose nella vita, gli indici costano denaro. Tutti gli indici su una tabella devono essere rinnovati se una delle righe in quella tabella viene modificata (tramite INSERT, UPDATE o DELETE). Queste modifiche costano tempo e, quando in un database sono presenti più indici, le prestazioni di un processo che modifica ampiamente le tabelle potrebbero risentirne.

Dobbiamo soppesare i vantaggi rispetto ai costi di costruzione di un indice prima di procedere. Possiamo prevedere un notevole aumento dell'efficienza? Si tratta di una tabella statistica o è stata ampiamente manipolata? Possiamo convivere con un calo delle prestazioni mentre modifichiamo il tavolo? I risultati di questo esame ci diranno se l'indice deve essere fatto o meno. Alcuni database hanno anche la capacità di costruire ed eliminare automaticamente gli indici secondo necessità.

Cose da non dimenticare sull'indice del database

Le seguenti sono cose da non dimenticare sull'indice del database:

  • L'indicizzazione comporta l'aggiunta di una struttura dati con colonne di criteri di ricerca e un puntatore.
  • Il puntatore è la posizione del disco di memoria della riga contenente i dati rimanenti.
  • L'ordinamento della struttura dei dati dell'indice migliora le prestazioni delle query.
  • Una query individua la riga desiderata nell'indice; una volta individuato, l'indice fornisce un riferimento al resto dei dati.
  • Con l'indice, la query deve esaminare solo quattro righe invece di diciassette.

Cos'è un indice per i manichini?

Un indice è un valore numerico utilizzato come misuratore. È un termine usato per descrivere un'analisi quantitativa del movimento di un mercato dei titoli. Gli indici del mercato azionario e gli indici del mercato obbligazionario nei mercati finanziari sono costituiti ciascuno da un portafoglio fittizio di titoli destinato a rappresentare l'intero mercato o un sottoinsieme di esso.

Qual è lo scopo dell'indicizzazione?

L'indicizzazione è uno strumento statistico per il monitoraggio di indicatori economici come l'inflazione, la disoccupazione, la crescita del PIL, la produttività e i rendimenti del mercato azionario.

Considerazioni finali

Un indice è molto più efficiente rispetto al fatto che i dipendenti riorganizzino costantemente il database in risposta a nuove query. L'indice, d'altra parte, genera la propria gerarchia di database interna. Un indice di database potrebbe impiegare una struttura B-Tree, per esempio. Inoltre, sono supportati i nodi con due o più diramazioni, quindi i lavoratori possono espandersi oltre le semplici ricerche binarie.

Riferimenti

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

Potrebbe piacerti anche