Van wikipedia:B-Trees en bitmapindexen . De gebruiksscenario's:
-
B-Trees zijn het typische indextype dat wordt gebruikt wanneer u
CREATE INDEX ...
in een database:- Ze zijn erg snel wanneer u slechts een kleine subset van de indexgegevens selecteert (meestal 5% -10%)
- Ze werken beter als je veel verschillende geïndexeerde waarden hebt.
- Het is mogelijk om meerdere B-Tree-indexen te combineren, maar eenvoudigere benaderingen zijn vaak efficiënter.
- Ze zijn niet handig wanneer er weinig verschillende waarden zijn voor de geïndexeerde gegevens, of wanneer u een grote (meestal>10%) subset van de gegevens wilt krijgen.
- Elke B-Tree-index legt een kleine boete op bij het invoegen/bijwerken van waarden in de geïndexeerde tabel. Dit kan een probleem zijn als je veel indexen hebt in een erg drukke tabel.
-
Bitmapindexen zijn een meer gespecialiseerde indexvariant:
- Ze coderen geïndexeerde waarden als bitmaps en zijn dus zeer ruimtebesparend.
- Ze werken meestal beter als er weinig duidelijke geïndexeerde waarden zijn
- DB-optimizers kunnen heel gemakkelijk verschillende geïndexeerde bitmaps combineren, dit zorgt voor een efficiënte uitvoering van complexe filters in query's.
- Ze zijn erg inefficiënt bij het invoegen/bijwerken van waarden.
Bitmap-indexen worden meestal gebruikt in datawarehouse-applicaties, waar de database alleen-lezen is, behalve voor de ETL-processen, en u meestal complexe query's moet uitvoeren tegen een sterrenschema , waar bitmapindexen het filteren kunnen versnellen op basis van voorwaarden in uw dimensietabellen, die meestal niet te veel verschillende waarden hebben.
Deze kenmerken maken B-Tree-indexen erg handig voor het versnellen van zoekopdrachten in OLTP-applicaties, wanneer u met zeer kleine datasets tegelijk werkt, de meeste zoekopdrachten filteren op ID en u goede gelijktijdige prestaties wilt.
Als een zeer korte samenvatting:gebruik B-Tree-indexen (de "standaard" index in de meeste databases) tenzij u een datawarehouse-ontwikkelaar bent en weet u profiteert van een bitmapindex.