Nếu tôi có một câu lệnh chọn với hàm vô hướng trong nó được sử dụng trong các phép tính khác nhau, được gọi nhiều lần? Nếu có, có cách nào để tối ưu hóa điều này vì vậy nó chỉ gọi funciton một lần cho mỗi lựa chọn, như trong truy vấn thực sự của tôi, nó sẽ được gọi là hàng ngàn lần, X 6 lần cho mỗi lựa chọn.Không gọi hàm vô hướng trong câu lệnh chọn nhiều lần chạy hàm nhiều lần, và cách lấy xung quanh nếu có
Ví dụ:
SELECT
[dbo].[fn_Days](@Account) + u.[DayRate],
[dbo].[fn_Days](@Account)/u.[WorkDays]
FROM [dbo].[tblUnit] u
Tất cả fn_days làm là trả lại một int ngày làm việc.
Tôi nhận ra rằng nó chạy cho mọi hàng, nhưng vì nó được chạy 2 lần trong cùng hàng, tôi có thể sử dụng cùng một giá trị như vậy vì vậy tôi không phải chạy nó nhiều lần mỗi hàng? – mameesh
Nhận thấy rằng ngay khi bạn đăng bình luận của mình. Nó có thể, về mặt lý thuyết, lưu trữ giá trị, nhưng tôi nghi ngờ nó. Một cách thô lỗ để tìm ra nó có thể là tạo ra một hàm mà cố ý mất một thời gian dài để chạy và sau đó gọi nó là truy vấn và hai lần trong một truy vấn và so sánh thời gian chạy. – Corbin
Xem kế hoạch truy vấn là gì nếu tham gia vào một tập hợp đã có kết quả của hàm làm cột. –