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

Sử dụng một Hàm để đơn giản hóa Truy vấn SQL có hiệu suất imapact lớn không?

Thông thường, lựa chọn kết quả của một hàm vô hướng sẽ không ảnh hưởng nhiều, nhưng lọc bởi nó có thể dễ dàng tốn hàng trăm giây (mặc dù không nhất thiết).

Nếu bạn cần lọc theo kết quả hàm vô hướng (WHERE col = dbo.scalar_function() ), thay vào đó, nó thường giúp tạo ra một hàm có giá trị bảng nội tuyến. Nó sẽ trả về giá trị của nó dưới dạng hàng duy nhất của bảng kết quả. Sau đó, bạn sẽ thực hiện inner join với kết quả của hàm, lọc hiệu quả theo giá trị trả về. Điều này hoạt động vì SQL Server luôn có thể giải nén các hàm có giá trị trong bảng và nội tuyến chúng vào truy vấn gọi.

Lưu ý rằng thủ thuật này sẽ không hoạt động nếu hàm là một trong nhiều bước. Chúng không thể bị ràng buộc.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để biết liệu SQLexception có bị ném do vi phạm khóa ngoại hay không?

  2. SQL Exception khi kết nối với máy chủ SQL

  3. Lưu trữ một lượng lớn dữ liệu cũ trong SQL Server

  4. Chèn chuỗi trống vào cột INT cho SQL Server

  5. Xuất bảng trong SQL Server 2008