nessunoBasi di Dati
 |  0          it  #24
Q: Illustrare le differenze tra i tipi di indici: denso/sparsi, clustered/unclustered, primario/secondario.
Si indichi quali combinazioni di tali indici non sono ammissibili.


A:
  • Indice denso: indicizza esattamente i record presenti sul file dati, effettua un mapping 1:1 tra gli elementi dell'indice e gli elementi indicizzati.
    Si usa prevalentemente per ridurre i costi di ricerca, in quanto ricercare su un indice è più veloce che cercare nel file dati (anche perché l'indice ha dimensioni ridotte).

  • Indice sparso: non indicizza tutti i record presenti sul file dati, ma solo alcuni. Si utilizza per ridurre le dimensioni dell'indice (rispetto ad uno denso) ed è il lato positivo.
    Il lato negativo è che in fase di ricerca, per accorgersi che un record con una determinata chiave non è presente è necessario accedere al file dati.

  • Indice clustered: indice che ha lo stesso ordinamento del file dati. Se il file dati è memorizzato in ordine di una chiave, l'indice è creato sulla stessa chiave.
    Evidentemente ogni file può avere al più un indice clustered.

  • Indice unclustered: è un indice non clustered. Quindi non creato sullo stesso ordinamento del file dati.

  • Indice primario: indice costruito su un campo a valori non ripetuti (chiave candidati, attributo UNIQUE). Quindi esiste un solo RID (Record ID) per valore di chiave.

  • Indice secondario: indice costruito su un campo a valori ripetuti, è possibile che vi siano più RID per lo stesso valore di chiave.



È possibile indicizzare indici. Su utilizzano a questo scopo gli indici sparsi (in quanto se l'indice fosse denso ed indicizzasse un altro indice denso, si avrebbe una copia dell'indice).

Gli indici che indicizzano indici sono alberi (e parliamo di indici multi-livello).

Le combinazioni ammissibili sono:
  • Indice clustered: denso e sparso: dato che esiste un ordinamento (clustered), può essere sia denso (mapping 1:1) che sparso. Le ricerche sono sempre possibili.

  • Indice unclustered: denso: essendo l'ordine dell'indice differente da quello del file, per poter effettuare ricerche è necessario che ogni record sia reperibili direttamente dall'indice, senza dover effettuare eccessi casuali al file dati.

  • Indice clustered: primario: è essenzialmente una copia del file dati, in quanto aventi stessa cardinalità e stesso ordine.

  • Indice clustered: secondario: indice con lo stesso ordinamento del file dati e con possibili valori ripetuti (si ha quando il file dati non è ordinato su chiave univoca ma su una chiave secondaria per l'appunto).

  • Indice unclustered: primario: se l'indice è costruito su una chiave a valori non ripetuti e con un ordinamento differente dal file dati.

  • Indice unclustered: secondario: indice costruito su una chiave a valori ripetuti e con ordinamento differente dal file dati.

  • Indice primario: denso: indice costruito su una chiave a valori non ripetuti e che la indicizza completamente.

  • Indice primario: sparso: non si può dire niente. Potrebbe come non potrebbe essere possibile, in quanto, se implementato con un indice clustered allora è possibile la ricerca. Se implmentato con un indice unclustered, la ricerca non è possibile.


Di conseguenza, le combinazioni non ammissibili di tali indici sono:

Indice unclustered e sparso: il motivo è che essendo un clustered è creato su un attributo del file che non è quello di ordinamento. Essendo sparso non contiene tutti i record del file.
Quindi come è possibile verificare se un determinato valore di chiave appartiene all'indice? Non si può accedere ad una pagina e poi leggere sequenzialmente il file dati, in quanto questo è ordinato in modo differente rispetto all'indice.

Di conseguenza qualsiasi indice sparso unclusterd (che sia primario/secondario) è di impossibile realizzazione.


This website uses cookies, even third part cookies: clicking on OK, continuing the navigation or interacting with the page you consented to the use of cookies. Information OK