Da wikipedia:B-Trees e indici bitmap . I casi d'uso:
-
I B-Trees sono il tipico tipo di indice utilizzato quando si esegue
CREATE INDEX ...
in un database:- Sono molto veloci quando selezioni solo un piccolo sottoinsieme dei dati dell'indice (5%-10% massimo in genere)
- Funzionano meglio quando hai molti valori indicizzati distinti.
- È possibile combinare diversi indici B-Tree, ma gli approcci più semplici sono spesso più efficienti.
- Non sono utili quando sono presenti pochi valori distinti per i dati indicizzati o quando si desidera ottenere un sottoinsieme di dati di grandi dimensioni (>10% in genere).
- Ogni indice B-Tree impone una piccola penalità durante l'inserimento/l'aggiornamento di valori nella tabella indicizzata. Questo può essere un problema se hai molti indici in una tabella molto occupata.
-
Gli indici bitmap sono una variante dell'indice più specializzata:
- Codificano i valori indicizzati come bitmap e quindi sono molto efficienti in termini di spazio.
- Tendono a funzionare meglio quando sono presenti pochi valori indicizzati distinti
- Gli ottimizzatori di database possono combinare più bitmap indicizzati molto facilmente, ciò consente l'esecuzione efficiente di filtri complessi nelle query.
- Sono molto inefficienti durante l'inserimento/l'aggiornamento dei valori.
Gli indici bitmap sono utilizzati principalmente nelle applicazioni di data warehouse, in cui il database è di sola lettura ad eccezione dei processi ETL e di solito è necessario eseguire query complesse su un schema a stella , dove gli indici bitmap possono velocizzare il filtraggio in base alle condizioni nelle tabelle delle dimensioni, che in genere non hanno troppi valori distinti.
Questa caratteristica rende gli indici B-Tree molto utili per velocizzare le ricerche nelle applicazioni OLTP, quando lavori con set di dati molto piccoli alla volta, la maggior parte delle query filtra per ID e desideri buone prestazioni simultanee.
In breve:usa gli indici B-Tree (l'indice "predefinito" nella maggior parte dei database) a meno che tu non sia uno sviluppatore di data warehouse e sa trarrai vantaggio da un indice bitmap.