L'indicizzazione migliora le prestazioni del database riducendo al minimo il numero di visite al disco necessarie per soddisfare una query. È una tecnica di struttura dei dati utilizzata per individuare e accedere rapidamente ai dati nei database. Diversi campi del database vengono utilizzati per generare indici. La chiave principale o chiave candidata della tabella è duplicata nella prima colonna, che è la chiave di ricerca. Per velocizzare il recupero dei dati, anche i valori vengono mantenuti in ordine. È opportuno evidenziare che non è richiesto l'ordinamento dei dati. La seconda colonna è il riferimento dati o puntatore che contiene una serie di puntatori che contengono l'indirizzo del blocco del disco in cui è possibile trovare quel particolare valore chiave.
Struttura dell'indice nel database
Attributi di indicizzazione
- Tipi di accesso: Si riferisce al tipo di accesso come ricerca basata sul valore, accesso all'intervallo, ecc.
- Orario di accesso: Si riferisce al tempo necessario per trovare un particolare elemento di dati o insieme di elementi.
- Orario di inserimento: Si riferisce al tempo impiegato per trovare lo spazio appropriato e inserire nuovi dati.
- Orario di eliminazione: Tempo impiegato per trovare un elemento ed eliminarlo, nonché per aggiornare la struttura dell'indice.
- Spazio in alto: Si riferisce allo spazio aggiuntivo richiesto dall'indice.
Struttura dell'indice nel database
In generale, esistono due tipi di meccanismi di organizzazione dei file a cui seguono i metodi di indicizzazione per archiviare i dati:
Organizzazione di file sequenziali o file di indice ordinato
In questo caso gli indici si basano su un ordinamento ordinato dei valori. Questi sono generalmente veloci e un tipo di meccanismo di archiviazione più tradizionale. Queste organizzazioni di file ordinati o sequenziali potrebbero archiviare i dati in un formato denso o sparso.
- Indice denso
- Per ogni valore della chiave di ricerca nel file di dati, esiste un record di indice.
- Questo record contiene la chiave di ricerca e anche un riferimento al primo record di dati con quel valore della chiave di ricerca.
Indice denso
- Indice sparso
- Il record indice viene visualizzato solo per alcuni elementi nel file di dati. Ogni elemento punta a un blocco come mostrato.
- Per individuare un record, troviamo il record dell'indice con il valore della chiave di ricerca più grande inferiore o uguale al valore della chiave di ricerca che stiamo cercando.
- Iniziamo dal record indicato dal record indice e procediamo insieme ai puntatori nel file (cioè in sequenza) finché non troviamo il record desiderato.
- Numero di accessi richiesti=log₂(n)+1, (qui n=numero di blocchi acquisiti dal file indice)
Indice sparso
Organizzazione dei file hash
Gli indici si basano sui valori distribuiti uniformemente su una serie di intervalli. Gli intervalli a cui viene assegnato un valore sono determinati da una funzione chiamata funzione hash. Esistono principalmente tre metodi di indicizzazione:
- Indicizzazione clusterizzata : Quando più di due record vengono archiviati nello stesso file, questo tipo di archiviazione è noto come indicizzazione del cluster. Utilizzando l'indicizzazione dei cluster possiamo ridurre il costo della ricerca poiché più record relativi alla stessa cosa sono archiviati in un unico posto e consente anche l'unione frequente di più di due tabelle (record).
L'indice di clustering è definito su un file di dati ordinato. Il file di dati è ordinato in un campo non chiave. In alcuni casi, l'indice viene creato su colonne di chiave non primaria che potrebbero non essere univoche per ciascun record. In questi casi, per identificare i record più velocemente, raggrupperemo due o più colonne insieme per ottenere valori univoci e creare un indice da essi. Questo metodo è noto come indice di clustering. In sostanza, i record con proprietà simili vengono raggruppati e vengono formati gli indici per questi raggruppamenti.
Gli studenti che studiano ogni semestre, ad esempio, sono raggruppati insieme. Vengono classificati gli studenti del primo semestre, gli studenti del secondo semestre, gli studenti del terzo semestre e così via.
Indicizzazione clusterizzata
- Indicizzazione primaria: Questo è un tipo di indicizzazione cluster in cui i dati vengono ordinati in base alla chiave di ricerca e la chiave primaria della tabella del database viene utilizzata per creare l'indice. È un formato predefinito di indicizzazione dove induce organizzazione di file sequenziali . Poiché le chiavi primarie sono univoche e vengono archiviate in modo ordinato, l'esecuzione dell'operazione di ricerca è piuttosto efficiente.
- Indicizzazione non cluster o secondaria : Un indice non cluster ci dice semplicemente dove si trovano i dati, ovvero ci fornisce un elenco di puntatori virtuali o riferimenti alla posizione in cui sono effettivamente archiviati i dati. I dati non vengono archiviati fisicamente nell'ordine dell'indice. Invece, i dati sono presenti nei nodi foglia. Per es. la pagina del contenuto di un libro. Ogni voce ci fornisce il numero di pagina o la posizione delle informazioni archiviate. I dati effettivi qui (informazioni su ogni pagina del libro) non sono organizzati ma abbiamo un riferimento ordinato (pagina del contenuto) a dove si trovano effettivamente i punti dati. Possiamo avere solo un ordinamento denso nell'indice non cluster poiché l'ordinamento sparso non è possibile perché i dati non sono organizzati fisicamente di conseguenza.
Richiede più tempo rispetto all'indice cluster perché viene eseguita una certa quantità di lavoro aggiuntivo per estrarre i dati seguendo ulteriormente il puntatore. Nel caso di un indice cluster, i dati sono direttamente presenti davanti all'indice.

Indicizzazione non clusterizzata
- Indicizzazione multilivello: Con la crescita delle dimensioni del database crescono anche gli indici. Poiché l'indice è archiviato nella memoria principale, un indice a livello singolo potrebbe diventare di dimensioni troppo grandi per essere archiviato con più accessi al disco. L'indicizzazione multilivello segrega il blocco principale in vari blocchi più piccoli in modo che gli stessi possano essere memorizzati in un unico blocco. I blocchi esterni sono divisi in blocchi interni che a loro volta fanno riferimento ai blocchi dati. Questo può essere facilmente memorizzato nella memoria principale con meno spese generali.
Indicizzazione multilivello
Vantaggi dell'indicizzazione
- Prestazioni delle query migliorate: L'indicizzazione consente un recupero più rapido dei dati dal database. Il database può scoprire rapidamente le righe che corrispondono a un valore specifico o a una raccolta di valori generando un indice su una colonna, riducendo al minimo il tempo necessario per eseguire una query.
- Accesso efficiente ai dati: L'indicizzazione può migliorare l'efficienza dell'accesso ai dati riducendo la quantità di I/O del disco necessaria per recuperare i dati. Il database può mantenere in memoria le pagine di dati per le colonne visitate di frequente generando un indice su tali colonne, diminuendo la necessità di leggere dal disco.
- Ordinamento ottimizzato dei dati: L'indicizzazione può anche migliorare le prestazioni delle operazioni di ordinamento. Creando un indice sulle colonne utilizzate per l'ordinamento, il database può evitare di ordinare l'intera tabella e ordinare invece solo le righe rilevanti.
- Prestazioni dei dati coerenti: L'indicizzazione può aiutare a garantire che il database funzioni in modo coerente anche quando la quantità di dati nel database aumenta. Senza indicizzazione, l'esecuzione delle query potrebbe richiedere più tempo man mano che il numero di righe nella tabella aumenta, mentre l'indicizzazione mantiene una velocità più o meno costante.
- Garantendo che solo valori univoci vengano inseriti nelle colonne indicizzate come univoche, è possibile utilizzare l'indicizzazione anche per garantire l'integrità dei dati. Ciò evita la memorizzazione di dati duplicati nel database, il che potrebbe causare problemi durante l'esecuzione di query o report.
Nel complesso, l'indicizzazione nei database offre vantaggi significativi per il miglioramento delle prestazioni delle query, un accesso efficiente ai dati, un ordinamento dei dati ottimizzato, prestazioni coerenti dei dati e integrità dei dati applicata
Svantaggi dell'indicizzazione
- L'indicizzazione richiede più spazio di archiviazione per contenere la struttura dei dati dell'indice, il che potrebbe aumentare la dimensione totale del database.
- Aumento del sovraccarico di manutenzione del database: Gli indici devono essere mantenuti man mano che i dati vengono aggiunti, distrutti o modificati nella tabella, il che potrebbe aumentare il sovraccarico di manutenzione del database.
- L'indicizzazione può ridurre le prestazioni di inserimento e aggiornamento poiché la struttura dei dati dell'indice deve essere aggiornata ogni volta che i dati vengono modificati.
- La scelta di un indice può essere difficile: Può essere difficile scegliere gli indici giusti per una query o un'applicazione specifica e potrebbe richiedere un esame dettagliato dei dati e dei modelli di accesso.
Caratteristiche dell'indicizzazione
- Lo sviluppo di strutture dati, come B-alberi O Le colonne più importanti per l'indicizzazione delle colonne vengono selezionate in base alla frequenza con cui vengono utilizzate e al tipo di query a cui sono sottoposte. IL cardinalità , selettività e unicità delle colonne di indicizzazione possono essere prese in considerazione.
- Esistono diversi tipi di indici utilizzati dai database, inclusi indici primari, secondari, cluster e non cluster. In base alle particolari esigenze del sistema di database, ogni forma di indice offre vantaggi e svantaggi.
- Affinché il sistema di database funzioni al meglio, è necessaria una manutenzione periodica dell'indice. In base ai cambiamenti nei dati e nei modelli di utilizzo, il lavoro di manutenzione comporta la creazione, l'aggiornamento e la rimozione degli indici.
- L'ottimizzazione delle query del database implica l'indicizzazione, che è essenziale. L'ottimizzatore delle query utilizza gli indici per scegliere la migliore strategia di esecuzione per una particolare query in base al costo di accesso ai dati e alla selettività delle colonne di indicizzazione.
- I database utilizzano una serie di strategie di indicizzazione, tra cui indici di copertura, scansioni del solo indice e indici parziali. Queste tecniche massimizzano l'utilizzo degli indici per particolari tipi di query e accesso ai dati.
- Quando in un indice vengono archiviati blocchi di dati non contigui, è possibile che si verifichi la frammentazione dell'indice, che rende l'indice meno efficace. La manutenzione regolare dell'indice, come la deframmentazione e la riorganizzazione, può diminuire frammentazione .
Conclusione
L'indicizzazione è una tecnica molto utile che aiuta a ottimizzare il tempo di ricerca Banca dati interrogazioni. La tabella di indicizzazione del database è composta da una chiave di ricerca e puntatore . Esistono quattro tipi di indicizzazione: clustering primario, secondario e indicizzazione multivalore. L'indicizzazione primaria è divisa in due tipi, densa e sparsa. L'indicizzazione densa viene utilizzata quando la tabella dell'indice contiene record per ogni chiave di ricerca. L'indicizzazione sparsa viene utilizzata quando la tabella dell'indice non utilizza una chiave di ricerca per ogni record. Usi di indicizzazione multilivello B+ Albero . Lo scopo principale dell'indicizzazione è fornire prestazioni migliori per il recupero dei dati.
Domande frequenti sull'indicizzazione
Q.1: Cos'è l'indicizzazione nei database?
Risposta:
L'indicizzazione è fondamentalmente una tecnica che aiuta a ridurre i tempi di ricerca di una query nel database o aiuta ad accedere più rapidamente al database.
Q.2: Quali sono gli esempi di indicizzazione dei database?
Risposta:
Alcuni esempi comuni di indicizzazione dei database sono Web of Science, DOAJ (Directory of Open Access Journals)
Per maggiori dettagli è possibile fare riferimento a Introduzione a B+ Tree E Tipi di chiavi nel database articolo.