Fra wikipedia:B-Trees og bitmapindekser . Brugstilfældene:
-
B-træer er den typiske indekstype, der bruges, når du
CREATE INDEX ...
i en database:- De er meget hurtige, når du kun vælger en lille meget delmængde af indeksdataene (typisk 5 %-10 % maks.)
- De fungerer bedre, når du har mange forskellige indekserede værdier.
- Det kan lade sig gøre at kombinere flere B-Tree-indekser, men enklere tilgange er ofte mere effektive.
- De er ikke nyttige, når der er få distinkte værdier for de indekserede data, eller når du ønsker at få en stor (typisk>10 %) delmængde af dataene.
- Hvert B-Tree-indeks pålægger en lille straf ved indsættelse/opdatering af værdier på den indekserede tabel. Dette kan være et problem, hvis du har mange indekser i en meget travl tabel.
-
Bitmap-indekser er en mere specialiseret indeksvariant:
- De koder indekserede værdier som bitmaps og er derfor meget pladseffektive.
- De har en tendens til at fungere bedre, når der er få distinkte indekserede værdier
- DB-optimering kan meget nemt kombinere flere bitmap-indekserede, hvilket giver mulighed for effektiv udførelse af komplekse filtre i forespørgsler.
- De er meget ineffektive, når de indsætter/opdaterer værdier.
Bitmap-indekser bruges mest i datavarehusapplikationer, hvor databasen er skrivebeskyttet bortset fra ETL-processerne, og du skal normalt udføre komplekse forespørgsler mod en stjerneskema , hvor bitmapindekser kan fremskynde filtrering baseret på betingelser i dine dimensionstabeller, som normalt ikke har for mange distinkte værdier.
Disse egenskaber gør B-Tree-indekser meget nyttige til at fremskynde søgninger i OLTP-applikationer, når du arbejder med meget små datasæt ad gangen, filtrerer de fleste forespørgsler efter ID, og du ønsker god samtidig ydeevne.
Som en meget kort opsummering:brug B-Tree-indekser ("standard"-indekset i de fleste databaser), medmindre du er en datavarehusudvikler og ved du vil drage fordel af et bitmapindeks.