Можете да осъществявате достъп до елементите само чрез техния първичен ключ в хештаблица. Това е по-бързо, отколкото с алгоритъм на дърво (O(1)
вместо log(n)
), но не можете да избирате диапазони (всичко между x
и y
).Дървовидните алгоритми поддържат това в Log(n)
докато хеш индексите могат да доведат до пълно сканиране на таблица O(n)
.Също така постоянните допълнителни разходи за хеш индексите обикновено са по-големи (което не е фактор в тета нотацията, но все още съществува ).Също така алгоритмите на дървото обикновено са по-лесни за поддръжка, нарастват с данни, мащаб и т.н.
Хеш индексите работят с предварително дефинирани хеш размери, така че в крайна сметка получавате някои "кофи", където се съхраняват обектите. Тези обекти се повтарят отново, за да намерят наистина правилния в този дял.
Така че, ако имате малки размери, имате много режийни разходи за малки елементи, големите размери водят до по-нататъшно сканиране.
Алгоритмите на днешните хеш таблици обикновено се мащабират, но мащабирането може да бъде неефективно.
Въпреки това може да има момент, в който вашият индекс надвишава поносим размер в сравнение с вашите хеш размери и целият ви индекс трябва да бъде изграден отново. Обикновено това не е проблем, но за огромни-огромни-огромни бази данни това може да отнеме дни.
Компромисът за дървовидните алгоритми е малък и те са подходящи за почти всеки случай на употреба и следователно са по подразбиране.
Ако обаче имате много точен случай на употреба и знаете точно какво и само какво ще ви е необходимо, можете да се възползвате от хеширане на индекси.