Możesz uzyskać dostęp do elementów tylko za pomocą ich klucza głównego w tablicy hashy. Jest to szybsze niż w przypadku algorytmu drzewiastego ( O(1)
zamiastlog(n)
), ale nie można wybierać zakresów ( wszystko pomiędzy x
iy
). Obsługują to algorytmy drzewiaste, Log(n)
podczas gdy indeksy skrótów mogą skutkować pełnym skanowaniem tabeli O(n)
. Również stały narzut indeksów hash jest zwykle większy ( co nie jest czynnikiem w notacji theta, ale nadal istnieje ). Również algorytmy drzewiaste są zwykle łatwiejsze w utrzymaniu, rosną wraz z danymi, skalą itp.
Indeksy haszujące działają z predefiniowanymi rozmiarami skrótów, więc otrzymujesz kilka „zasobników”, w których przechowywane są obiekty. Te obiekty są ponownie zapętlane, aby naprawdę znaleźć właściwy w tej partycji.
Więc jeśli masz małe rozmiary, masz dużo narzutu na małe elementy, duże rozmiary powodują dalsze skanowanie.
Dzisiejsze algorytmy tablic skrótów zwykle skalują się, ale skalowanie może być nieefektywne.
Rzeczywiście istnieją skalowalne algorytmy haszujące. Nie pytaj mnie, jak to działa - dla mnie też to tajemnica. AFAIK, ewoluowali ze skalowalnej replikacji, w której ponowne haszowanie nie jest łatwe.
Nazywa POŚPIECH - R eplication U RSR S calable H spopielania, a te tak zwane są algorytmy algorytmy szczytu.
Może się jednak zdarzyć, że indeks przekroczy dopuszczalny rozmiar w porównaniu z rozmiarami skrótów i cały indeks będzie wymagał ponownego zbudowania. Zwykle nie stanowi to problemu, ale w przypadku ogromnych, ogromnych, ogromnych baz danych może to zająć kilka dni.
Kompromis dla algorytmów drzewiastych jest niewielki i są one odpowiednie dla prawie każdego przypadku użycia, a zatem są domyślne.
Jeśli jednak masz bardzo precyzyjny przypadek użycia i wiesz dokładnie, co i tylko co będzie potrzebne, możesz skorzystać z indeksów haszujących.