sql >> Database teknologi >  >> RDS >> Oracle

B-Tree vs Bitmap-databaseindekser

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:

    1. 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.

  • 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.

  • Bitmap-indekser er en mere specialiseret indeksvariant:

    1. De koder indekserede værdier som bitmaps og er derfor meget pladseffektive.
    2. De har en tendens til at fungere bedre, når der er få distinkte indekserede værdier
    3. DB-optimering kan meget nemt kombinere flere bitmap-indekserede, hvilket giver mulighed for effektiv udførelse af komplekse filtre i forespørgsler.
    4. 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.

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.



  1. Er det muligt at gemme billeder, lyde, videoer i SQL-databasen?

  2. Fyld MySQL registrerer en-til-mange relaterede tabeller i én handling

  3. Er der en måde at bruge ARRAYs i Entity Framework + PostgreSql

  4. Sorter efter kolonne ASC, men NULL-værdier først?