Bạn chỉ có thể truy cập các phần tử bằng khóa chính của chúng trong bảng băm. Điều này nhanh hơn so với thuật toán cây ( O(1)
thay vì log(n)
), nhưng bạn không thể chọn phạm vi ( mọi thứ ở giữa x
và y
) .Ba thuật toán hỗ trợ điều này trong Log(n)
trong khi chỉ mục băm có thể dẫn đến việc quét toàn bộ bảng O(n)
.Ngoài ra, chi phí không đổi của các chỉ mục băm thường lớn hơn ( không có yếu tố nào trong ký hiệu theta, nhưng nó vẫn tồn tại ). Ngoài ra, các thuật toán cây thường dễ bảo trì hơn, phát triển theo dữ liệu, quy mô, v.v.
Chỉ mục băm hoạt động với kích thước băm được xác định trước, vì vậy bạn sẽ có một số "nhóm" nơi lưu trữ các đối tượng. Các đối tượng này được lặp lại nhiều lần để thực sự tìm thấy đối tượng phù hợp bên trong phân vùng này.
Vì vậy, nếu bạn có kích thước nhỏ, bạn có nhiều chi phí cho các phần tử nhỏ, kích thước lớn dẫn đến việc quét thêm.
Các thuật toán bảng băm ngày nay thường mở rộng quy mô, nhưng việc mở rộng quy mô có thể không hiệu quả.
Tuy nhiên, có thể có điểm mà chỉ mục của bạn vượt quá kích thước có thể chấp nhận được so với kích thước băm của bạn và toàn bộ chỉ mục của bạn cần được xây dựng lại. Thông thường đây không phải là vấn đề, nhưng đối với cơ sở dữ liệu khổng lồ, khổng lồ, việc này có thể mất vài ngày.
Sự cân bằng cho các thuật toán cây là nhỏ và chúng phù hợp với hầu hết mọi trường hợp sử dụng và do đó được mặc định.
Tuy nhiên, nếu bạn có một trường hợp sử dụng rất chính xác và bạn biết chính xác những gì và chỉ những gì sẽ cần thiết, bạn có thể tận dụng lợi thế của các chỉ mục băm.