Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Indeksy baz danych B-Tree vs Bitmap

Z wikipedii:B-Drzewa i indeksy bitmapowe . Przypadki użycia:

  • B-Trees to typowy typ indeksu używany podczas wykonywania CREATE INDEX ... w bazie danych:

    1. Są bardzo szybkie, gdy wybierasz tylko bardzo mały podzbiór danych indeksu (zwykle 5%-10%)
  • Działają lepiej, gdy masz wiele odrębnych wartości indeksowanych.
  • Można połączyć kilka indeksów B-Tree, ale prostsze podejścia są często bardziej wydajne.
  • Nie są one przydatne, gdy istnieje kilka odrębnych wartości dla indeksowanych danych lub gdy chcesz uzyskać duży (zwykle>10%) podzbiór danych.
  • Każdy indeks B-Tree nakłada niewielką karę podczas wstawiania/aktualizowania wartości w indeksowanej tabeli. Może to stanowić problem, jeśli masz dużo indeksów w bardzo zajętej tabeli.

  • Ta cecha sprawia, że ​​indeksy B-Tree są bardzo przydatne do przyspieszania wyszukiwania w aplikacjach OLTP, gdy pracujesz z bardzo małymi zestawami danych naraz, większość zapytań filtruje według identyfikatora i chcesz uzyskać dobrą jednoczesną wydajność.

  • Indeksy bitmapowe są bardziej wyspecjalizowanym wariantem indeksu:

    1. Kodują zindeksowane wartości jako mapy bitowe, dzięki czemu zajmują bardzo mało miejsca.
    2. Zwykle działają lepiej, gdy istnieje kilka odrębnych wartości indeksowanych
    3. Optymalizatory DB mogą bardzo łatwo łączyć kilka zindeksowanych map bitowych, co pozwala na wydajne wykonywanie złożonych filtrów w zapytaniach.
    4. Są bardzo nieefektywne podczas wstawiania/aktualizowania wartości.


    Indeksy bitmapowe są najczęściej używane w aplikacjach hurtowni danych, gdzie baza danych jest tylko do odczytu, z wyjątkiem procesów ETL, i zazwyczaj trzeba wykonywać złożone zapytania na schemat gwiazdy , gdzie indeksy bitmapowe mogą przyspieszyć filtrowanie na podstawie warunków w tabelach wymiarów, które zwykle nie mają zbyt wielu odrębnych wartości.

Jako bardzo krótkie podsumowanie:używaj indeksów B-Tree (indeks „domyślny” w większości baz danych), chyba że jesteś programistą hurtowni danych i wiesz skorzystasz na indeksie bitmapowym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatyczne generowanie kluczy hibernacji za pomocą MySQL i Oracle

  2. Co oznacza znak (+) w klauzuli Oracle SQL WHERE?

  3. Zapytanie krzyżowe Oracle SQL

  4. Usuwanie wielu kolumn:PLSQL i user_tab_cols

  5. Jak pokazać 0, gdy nie znaleziono żadnego wiersza