Bất kỳ ai cũng có thể giúp tôi hiểu kế hoạch thực thi SQL Server cho các truy vấn sau không?Chức năng vô hướng SQL Server so với phân tích kế hoạch thực hiện truy vấn phụ
Tôi đã mong đợi phiên bản truy vấn phụ (Truy vấn 2) thực thi nhanh hơn, vì nó được đặt dựa trên. Điều này có vẻ như là khi chạy các truy vấn một cách độc lập - tuy nhiên - kế hoạch thực hiện cho thấy chi phí truy vấn là 15% so với 85% tương ứng:
//-- Query 1 (15%) - Scalar Function
SELECT
gi.GalleryImageId,
gi.FbUserId,
dbo.GetGalleryImageVotesByGalleryImageId(gi.GalleryImageId) AS Votes
FROM
GalleryImage gi
//-- Query 2 (85%) - Subquery
SELECT
gi.GalleryImageId,
gi.FbUserId,
(SELECT COUNT(*) FROM GalleryImageVote WHERE GalleryImageId = gi.GalleryImageId)
FROM
GalleryImage gi
Tôi thiếu gì ở đây; kế hoạch thực hiện có bỏ qua chi phí của hàm không? Ngoài ra, bất kỳ đề xuất nào về việc liệu một trong hai điều trên sẽ được phục vụ tốt hơn với truy vấn CTE hoặc OVER/PARTITION?
Cảm ơn bạn trước!
Bạn có cả hai trong cùng một cửa sổ trình chỉnh sửa truy vấn không? Vì trình phân tích truy vấn sẽ so sánh chúng và chỉ định mỗi giá trị tương đối với giá trị trong cửa sổ (15%/85%). – JNK
Có, đó là nơi giá trị% đến từ :) – Robarondaz
Thời gian thực hiện truy vấn không phải lúc nào cũng bằng chi phí. SQL Server có vẻ như sử dụng CPU và RAM cao hơn HDD. – jahu