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

SQL Server không sử dụng chỉ mục so sánh datetime với không null

Điều này là bình thường. Nó sẽ không sử dụng chỉ mục trừ khi vị từ đủ chọn lọc để đảm bảo nó.

Có vẻ như phần lớn các bản ghi không phải là NULL, vì vậy thay vì tìm những bản ghi này thông qua chỉ mục không được phân cụm thì bạn phải thực hiện vô số tra cứu dấu trang và nhập / xuất ngẫu nhiên để truy xuất phần còn lại của các cột để trả về nhanh hơn và hiệu quả hơn. chỉ cần quét toàn bộ chỉ mục được nhóm.

Bạn có thể sử dụng FORCESEEK để buộc thực hiện hành vi mà bạn nói rằng bạn muốn. Bạn có thể sẽ thấy rằng thời gian thực hiện và số liệu thống kê I / O vượt qua so với quá trình quét chỉ mục theo nhóm.

SET STATISTICS IO ON

SELECT * FROM 
YourTable WITH (FORCESEEK) 
WHERE YourCol IS NOT NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có cách nào để vô hiệu hóa trình kích hoạt SQL Server chỉ cho một phạm vi thực thi cụ thể không?

  2. Giá trị rỗng trong kiểu dữ liệu varbinary tham số

  3. Nhiều cột Pivot trong T-SQL

  4. Cách NULLIF () hoạt động trong SQL Server

  5. Tại sao WHERE column =NULL không xuất hiện lỗi trong SQL Server?