Anda hanya dapat mengakses elemen dengan kunci utamanya di hashtable. Ini lebih cepat daripada dengan algoritma pohon ( O(1)
bukanlog(n)
), tetapi Anda tidak dapat memilih rentang ( semua di antara x
dany
). Algoritme pohon mendukung ini di mana Log(n)
indeks hash dapat menghasilkan pemindaian tabel penuh O(n)
. Juga overhead konstan indeks hash biasanya lebih besar ( yang bukan merupakan faktor dalam notasi teta, tetapi masih ada ). Juga algoritma pohon biasanya lebih mudah untuk dipelihara, dikembangkan dengan data, skala, dll.
Indeks hash bekerja dengan ukuran hash yang telah ditentukan sebelumnya, jadi Anda akan mendapatkan beberapa "keranjang" tempat objek disimpan. Objek ini diulangi lagi untuk benar-benar menemukan yang benar di dalam partisi ini.
Jadi, jika Anda memiliki ukuran kecil, Anda memiliki banyak overhead untuk elemen kecil, ukuran besar menghasilkan pemindaian lebih lanjut.
Algoritme tabel hash saat ini biasanya menskalakan, tetapi penskalaan bisa jadi tidak efisien.
Memang ada algoritme hashing yang dapat diskalakan. Jangan tanya saya bagaimana cara kerjanya - ini juga merupakan misteri bagi saya. AFAIK mereka berevolusi dari replikasi terukur di mana hashing ulang tidak mudah.
Yang disebut RUSH - R eplication U nder S calable H ashing, dan algoritma yang demikian disebut algoritma RUSH.
Namun mungkin ada titik di mana indeks Anda melebihi ukuran yang dapat ditoleransi dibandingkan dengan ukuran hash Anda dan seluruh indeks Anda perlu dibuat ulang. Biasanya ini bukan masalah, tetapi untuk database yang sangat-sangat-sangat-sangat besar, ini bisa memakan waktu berhari-hari.
Pengorbanan untuk algoritme pohon kecil dan cocok untuk hampir semua kasus penggunaan dan karenanya menjadi default.
Namun jika Anda memiliki kasus penggunaan yang sangat tepat dan Anda tahu persis apa dan hanya apa yang akan dibutuhkan, Anda dapat memanfaatkan indeks hashing.