- Ci sono altri modi di indicizzare ?,
- Quali sono i più usati?
- SQL ha uno standard per gli indici, usa le tabelle hash?
Le tabelle hash ti permettono di cercare rapidamente un oggetto se hai la chiave esatta . Le tabelle hash non possono gestire una richiesta come "dammi tutte le fatture emesse dal 2 al 15 aprile".
Molto tempo un accesso al database richiede tutti i dati in un intervallo di valori. Gli alberi di ricerca funzionano molto meglio per questo.
Lo standard ANSI SQL non richiede indici hash. Tuttavia, diversi prodotti di database relazionali hanno scelto l'hashing come implementazione di indice. PostgreSQL consente loro di essere esplicitamente dichiarati. SQL Server utilizza l'hashing nel suo motore OLTP in memoria . Inoltre, un modo per implementare una condizione SQL JOIN consiste nell'utilizzare le tabelle hash, sebbene queste tabelle hash siano attive solo fino a quando la query è in esecuzione.
La definizione e l'uso dell'indice sono un campo di ricerca ampio e continuo. Ci sono diverse varianti su BTrees; le bitmap memorizzano un bit per riga di interesse e sono più spesso utilizzate in scanarions di datawarehouse; gli indici di intervallo blocco e blocco memorizzano una voce di indice per blocco disco anziché per riga dati; gli indici specifici per l'elaborazione del linguaggio naturale sono comuni; albero frattale gli indici mirano a funzionare problemi di concorrenza con BTrees; molti altri esistono. Ognuno di questi ha caratteristiche diverse per prestazioni, concorrenza, disco e memoria e le query possono supportare ciascuna.
Il tipo di indice più comunemente implementato è B-Tree o una delle sue varianti. Come suggerisce il nome, questa è una struttura ad albero. Memorizza una voce di indice per riga di dati corrispondenti. La distanza da radice a foglia è la stessa lunghezza indipendentemente dal percorso scelto e i percorsi rimangono bilanciati dopo gli inserimenti e le eliminazioni (da cui il nome) che offre prestazioni uniformi su intervalli di chiavi.
Leggi altre domande sui tag sql performance hashing indexing