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:- 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.
-
Indeksy bitmapowe są bardziej wyspecjalizowanym wariantem indeksu:
- Kodują zindeksowane wartości jako mapy bitowe, dzięki czemu zajmują bardzo mało miejsca.
- Zwykle działają lepiej, gdy istnieje kilka odrębnych wartości indeksowanych
- Optymalizatory DB mogą bardzo łatwo łączyć kilka zindeksowanych map bitowych, co pozwala na wydajne wykonywanie złożonych filtrów w zapytaniach.
- 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.
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ść.
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.