Från wikipedia:B-Trees och bitmappsindex . Användningsfallen:
-
B-träd är den typiska indextypen som används när du gör
CREATE INDEX ...
i en databas:- De är mycket snabba när du bara väljer en liten mycket delmängd av indexdata (vanligtvis 5–10 % max)
- De fungerar bättre när du har många distinkta indexerade värden.
- Det går att kombinera flera B-Tree-index, men enklare metoder är ofta mer effektiva.
- De är inte användbara när det finns få distinkta värden för den indexerade informationen, eller när du vill få en stor (>10 % typiskt) delmängd av datan.
- Varje B-Tree-index ger ett litet straff när man infogar/uppdaterar värden på den indexerade tabellen. Detta kan vara ett problem om du har många index i en mycket upptagen tabell.
-
Bitmappsindex är en mer specialiserad indexvariant:
- De kodar indexerade värden som bitmappar och är därför mycket utrymmeseffektiva.
- De tenderar att fungera bättre när det finns få distinkta indexerade värden
- DB-optimerare kan kombinera flera bitmappar som indexeras mycket enkelt, vilket möjliggör effektiv exekvering av komplexa filter i frågor.
- De är mycket ineffektiva när man infogar/uppdaterar värden.
Bitmappsindex används mest i datalagerapplikationer, där databasen är skrivskyddad förutom ETL-processerna, och du behöver vanligtvis utföra komplexa frågor mot en stjärnschema , där bitmappsindex kan påskynda filtreringen baserat på förhållanden i dina dimensionstabeller, som vanligtvis inte har för många distinkta värden.
De här egenskaperna gör B-Tree-index mycket användbara för att snabba upp sökningar i OLTP-applikationer, när du arbetar med mycket små datamängder åt gången filtrerar de flesta frågor efter ID och du vill ha god samtidig prestanda.
Som en mycket kort sammanfattning:använd B-Tree-index ("standard"-index i de flesta databaser) om du inte är en datalagerutvecklare och vet du kommer att dra nytta av ett bitmappsindex.