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

Có bất kỳ vấn đề về Hiệu suất nào khi sử dụng ISNULL () trong SQL Server không?

ISNULL () trong mệnh đề select có ảnh hưởng không đáng kể đến hiệu suất. Mặt khác, trong mệnh đề where-có thể có tác động rất lớn đến hiệu suất, vì nó ngăn trình tối ưu hóa sử dụng chỉ mục trên cột đó.

where isnull(col1, 0) = 0 -- unable to use index, because every 
                          -- row has to be evaluated

where col1 = isnull(@myVar, 0) -- index will be used, since isnull(@myVar, 0) 
                               -- returns the same static value for every row and 
                               -- not every row has to be evaluated by the function.

Vì vậy, khi sử dụng isnull () trong mệnh đề where, hãy đánh giá xem nó có ngăn trình tối ưu hóa truy vấn sử dụng chỉ mục hay không. Nếu vậy, hãy cân nhắc tạo một cột được tính với kết quả nếu là không (col1, 0) và lập chỉ mục cột đã tính và sử dụng nó trong mệnh đề where của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố tài khoản công việc của tác nhân SQL Server

  2. Tạo bảng tạm thời trong SQL Server

  3. Công cụ khôi phục SQL tốt nhất cho năm 2020 để khôi phục cơ sở dữ liệu SQL quan trọng

  4. Các bản sửa lỗi liên quan đến hiệu suất cho SQL Server 2012

  5. SQL MAX của nhiều cột?