Skip to main content

Clustered Index

Trong cơ sở dữ liệu, chỉ mục giúp cải thiện tốc độ truy vấn. Có hai loại chỉ mục phổ biến là clustered index và non-clustered index, chúng có những điểm khác biệt như sau:

─────────────────────────────
• Clustered Index
─────────────────────────────

  • Clustered index sắp xếp và lưu trữ dữ liệu của bảng theo thứ tự của chỉ mục đó.
  • Một bảng chỉ có thể có một clustered index do dữ liệu chỉ được lưu trữ theo một thứ tự duy nhất.
  • Khi một truy vấn được thực hiện theo cột được clustered index, quá trình truy xuất dữ liệu sẽ nhanh hơn vì dữ liệu đã được sắp xếp sẵn trên đĩa.
  • Ví dụ: Trong SQL Server, nếu bạn đặt một clustered index trên một cột như mã nhân viên (EmployeeID), dữ liệu trong bảng sẽ được sắp xếp tăng dần theo EmployeeID.

─────────────────────────────
• Non-Clustered Index
─────────────────────────────

  • Non-clustered index tạo ra một cấu trúc riêng (thường dưới dạng cây B-tree) lưu trữ giá trị của cột index cùng với con trỏ chỉ đến hàng dữ liệu trong bảng.
  • Một bảng có thể có nhiều non-clustered index, giúp cải thiện hiệu năng truy vấn trên nhiều cột khác nhau.
  • Vì dữ liệu không được lưu trữ theo thứ tự của non-clustered index nên truy vấn thông qua nó sẽ cần thêm bước “lookup” để lấy dữ liệu từ bảng chính (đặc biệt khi các cột khác không có trong index).
  • Non-clustered index phù hợp với các cột có tính phân bố giá trị tốt và thường xuyên được sử dụng trong điều kiện WHERE, JOIN, hoặc ORDER BY.

─────────────────────────────
Tóm lại:

  • Clustered index định nghĩa cách lưu trữ vật lý dữ liệu của bảng theo thứ tự, chỉ có 1 một bảng.
  • Non-clustered index tạo ra các cấu trúc riêng biệt để trỏ tới dữ liệu trong bảng, có thể có nhiều và hỗ trợ truy vấn trên các cột khác nhau.

Việc lựa chọn sử dụng clustered index hay non-clustered index phụ thuộc vào nhu cầu truy xuất dữ liệu, cấu trúc bảng và mục đích tối ưu hiệu năng của hệ thống quản trị cơ sở dữ liệu.