Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thứ tự của các cột trong chỉ mục quan trọng như thế nào?

Nhìn vào một chỉ mục như thế này:

Cols
  1   2   3
-------------
|   | 1 |   |
| A |---|   |
|   | 2 |   |
|---|---|   |
|   |   |   |
|   | 1 | 9 |
| B |   |   |
|   |---|   |
|   | 2 |   |
|   |---|   |
|   | 3 |   |
|---|---|   |

Xem cách hạn chế trên A trước tiên, vì cột đầu tiên của bạn loại bỏ nhiều kết quả hơn so với hạn chế trên cột thứ hai trước tiên? Sẽ dễ dàng hơn nếu bạn hình dung cách chỉ mục phải được duyệt qua, cột 1, rồi cột 2, v.v. bạn thấy rằng việc loại bỏ hầu hết các kết quả trong đường chuyền nắm tay sẽ làm cho bước thứ 2 nhanh hơn nhiều.

Một trường hợp khác, nếu bạn truy vấn trên cột 3, trình tối ưu hóa thậm chí sẽ không sử dụng chỉ mục, vì nó không hữu ích chút nào trong việc thu hẹp các tập kết quả. Bất cứ khi nào bạn đang truy vấn, việc thu hẹp số lượng kết quả cần xử lý trước bước tiếp theo có nghĩa là hiệu suất tốt hơn.

Vì chỉ mục cũng được lưu trữ theo cách này, nên không có dữ liệu quay lui trên chỉ mục để tìm cột đầu tiên khi bạn đang truy vấn trên đó.

Tóm lại:Không, nó không phải để trưng bày, có những lợi ích thực sự về hiệu suất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ mục Clustered và Non-Clustered thực sự có nghĩa là gì?

  2. Ví dụ về Chuyển đổi "date" thành "datetimeoffset" trong SQL Server (T-SQL)

  3. Khôi phục quyền truy cập vào phiên bản SQL Server mà không cần khởi động lại

  4. Quản lý tệp MDF trong SQL Server 2019

  5. Xuất bộ kết quả thủ tục đã lưu trữ sang Excel trong SSMS