Solo puede acceder a los elementos por su clave principal en una tabla hash. Esto es más rápido que con un algoritmo de árbol (O(1)
en lugar de log(n)
), pero no puede seleccionar rangos (todo lo que está entre x
y y
). Los algoritmos de árbol admiten esto en Log(n)
mientras que los índices hash pueden dar como resultado un escaneo completo de la tabla O(n)
.Además, la sobrecarga constante de los índices hash suele ser mayor (que no es un factor en la notación theta, pero aún existe ). Además, los algoritmos de árbol suelen ser más fáciles de mantener, crecer con datos, escalar, etc.
Los índices hash funcionan con tamaños hash predefinidos, por lo que termina con algunos "cubos" donde se almacenan los objetos. Estos objetos se repiten nuevamente para encontrar realmente el correcto dentro de esta partición.
Entonces, si tiene tamaños pequeños, tiene muchos gastos generales para elementos pequeños, los tamaños grandes dan como resultado un escaneo adicional.
Los algoritmos de tablas hash actuales suelen escalar, pero el escalado puede ser ineficiente.
Sin embargo, puede haber un punto en el que su índice exceda un tamaño tolerable en comparación con sus tamaños de hash y su índice completo deba reconstruirse. Por lo general, esto no es un problema, pero para bases de datos enormes, enormes, esto puede llevar días.
La compensación por los algoritmos de árbol es pequeña y son adecuados para casi todos los casos de uso y, por lo tanto, son predeterminados.
Sin embargo, si tiene un caso de uso muy preciso y sabe exactamente qué y solo qué se necesitará, puede aprovechar los índices hash.