K prvkům můžete přistupovat pouze pomocí jejich primárního klíče v hashovací tabulce. Je to rychlejší než u stromového algoritmu (O(1)
místo log(n)
), ale nemůžete vybrat rozsahy (vše mezi x
a y
).Stromové algoritmy to podporují v Log(n)
zatímco hash indexy mohou vést k úplnému prohledání tabulky O(n)
.Také konstantní režie hash indexů je obvykle větší (což není žádný faktor v notaci theta, ale stále existuje ).Také stromové algoritmy se obvykle snáze udržují, rostou s daty, měřítko atd.
Hash indexy pracují s předdefinovanými velikostmi hashů, takže skončíte s nějakými "buckety", ve kterých jsou objekty uloženy. Tyto objekty jsou znovu opakovány, aby se skutečně našel ten správný uvnitř tohoto oddílu.
Takže pokud máte malé velikosti, máte spoustu režií na malé prvky, velké velikosti vedou k dalšímu skenování.
Dnešní algoritmy hashovacích tabulek se obvykle škálují, ale škálování může být neefektivní.
Může však nastat bod, kdy váš index překročí tolerovatelnou velikost ve srovnání s vašimi hashovacími velikostmi a celý váš index bude nutné znovu sestavit. Obvykle to není problém, ale u obrovských-obrovských-obrovských databází to může trvat dny.
Výhoda pro stromové algoritmy je malá a jsou vhodné pro téměř každý případ použití, a proto jsou výchozí.
Pokud však máte velmi přesný případ použití a přesně víte, co a jen co bude potřeba, můžete využít výhod hashovacích indexů.