2012-11-20 29 views
20

Tôi đã nghiên cứu băm trong DBMS (mở rộng, tuyến tính) và về lập chỉ mục trong DBMS (thưa thớt, dày đặc, chỉ mục dựa trên khóa phụ, v.v.), nhưng tôi không thể hiểu sự khác biệt giữa Hashing và lập chỉ mục. Hai kỹ thuật này được sử dụng cùng nhau hay chỉ được sử dụng? Tôi bối rối vì mục đích của cả hai kỹ thuật dường như là để cho phép chúng tôi truy xuất dữ liệu một cách nhanh chóng, vì vậy tôi nghĩ là nên đủ.Sự khác biệt giữa băm và lập chỉ mục là gì?

Có ai có thể làm rõ sự khác biệt không?

+4

băm là một phương pháp lập chỉ mục (hoặc một loại phương thức _access_); cây (B-cây, vv) là một cây khác. –

Trả lời

12

Lập chỉ mục là gì?

Lập chỉ mục là cách sắp xếp một số bản ghi trên nhiều trường. Việc tạo một chỉ mục trên một trường trong bảng sẽ tạo ra một cấu trúc dữ liệu khác chứa giá trị trường và con trỏ tới bản ghi có liên quan đến nó. Cấu trúc chỉ mục này sau đó được sắp xếp, cho phép thực hiện tìm kiếm nhị phân trên nó.

Hàm băm là gì?

Việc băm là việc chuyển đổi chuỗi ký tự thành giá trị độ dài cố định hoặc khóa ngắn hơn thường đại diện cho chuỗi gốc. Hashing được sử dụng để lập chỉ mục và truy xuất các mục trong cơ sở dữ liệu vì tìm nhanh mục đó bằng cách sử dụng khóa băm ngắn hơn để tìm mục đó bằng giá trị ban đầu.

Tôi nghĩ điều này có thể làm rõ sự nghi ngờ của bạn.

+0

Nếu bạn có hồ sơ mới được thêm vào, việc sắp xếp cấu trúc chỉ mục sẽ trở nên tốn kém. Bạn cũng có thể đề cập rằng thay vào đó, cây B + có thể được sử dụng để sắp xếp dữ liệu để cho phép truy cập nhanh vào khóa lập chỉ mục. – adijo

10

Hash là loại chỉ mục: nó có thể được sử dụng để định vị bản ghi dựa trên khóa - nhưng nó không giữ lại bất kỳ thứ tự bản ghi nào. Dựa trên băm, người ta không thể lặp lại thành phần kế tiếp hoặc trước đó. Tuy nhiên, chỉ số này làm gì (trong bối cảnh cơ sở dữ liệu.)

2
  • Việc băm không đảm bảo rằng các giá trị khác biệt sẽ được băm thành địa chỉ riêng biệt.
  • Va chạm có trong Hashing.
  • Hashing kết quả trong Luồng tràn.
  • Không cần truy cập cấu trúc chỉ mục để định vị dữ liệu & rồi đọc dữ liệu từ tệp DB.
  • Có lệnh để xác định lập chỉ mục nhưng không phải để băm.
+4

Tôi nghĩ rằng sự khác biệt lớn nhất giữa băm và lập chỉ mục, mà câu trả lời của bạn và nhiều người khác bỏ lỡ là * hầu hết các lược đồ lập chỉ mục phù hợp để sắp xếp hoặc tìm kiếm các kết quả "gần", trong khi băm nói chung là vô dụng đối với bất kỳ điều gì khác ngoài việc tìm kiếm "chính xác" kết quả phù hợp. – supercat

0

băm là kỹ thuật tìm kiếm nâng cao.i.e dữ liệu lớn được tạo thành mục dữ liệu nhỏ và được lưu trữ trong bảng. Nhưng việc lập chỉ mục và tìm kiếm nhị phân xuất hiện dưới dạng tìm kiếm theo cách tuyến tính. và cũng lập chỉ mục được sử dụng để tạo chỉ mục (khóa) để kết hợp nhiều trường

Các vấn đề liên quan