DB cần duy trì B-Tree (hoặc một cấu trúc tương tự) với khóa theo cách để chúng sắp xếp.
Nếu khóa được băm và lưu trữ trong B-Tree, bạn có thể nhanh chóng kiểm tra tính duy nhất của khóa - khóa vẫn có thể được tra cứu một cách hiệu quả. Nhưng bạn sẽ không thể tìm kiếm hiệu quả cho phạm vi dữ liệu (ví dụ:với LIKE
) bởi vì B-Tree không được sắp xếp theo giá trị Chuỗi nữa.
Vì vậy, tôi nghĩ rằng hầu hết DB thực sự lưu trữ Chuỗi trong B-Tree, có thể (1) chiếm nhiều không gian hơn hơn giá trị số và (2) yêu cầu Cây B phải được cân bằng lại nếu các khóa được chèn theo thứ tự tùy ý (không có khái niệm tăng giá trị như với pk số).
Hình phạt trong thực tế có thể dao động từ không đáng kể đến rất lớn. Tất cả phụ thuộc vào cách sử dụng, số lượng hàng, kích thước trung bình của khóa chuỗi, các truy vấn tham gia bảng, v.v.