Trong một ứng dụng sản xuất (C # nói chuyện với SQL Server 2014 Standard), có một truy vấn giống như thế này, bên dưới. Hầu hết thời gian nó chạy trong một phần nghìn giây. Nhưng đôi khi (đối với các giá trị nhất định @Id
), nó trở nên tồi tệ và mất một phút hoặc lâu hơn. Thời gian này dài hơn thời gian chờ của ứng dụng, vì vậy ứng dụng không thành công cho người dùng.
Trong các trường hợp "go nut", tập kết quả trả về hoàn toàn trống, vì nó nằm trong nhiều trường hợp chứ không phải tất cả các trường hợp khác.
May mắn thay, điều này có thể tái sản xuất cả trong môi trường sản xuất và phát triển.
Nhà phát triển cho biết xóa "TOP 1" khỏi truy vấn, sau đó đảm bảo ứng dụng tiêu thụ thêm các hàng của tập kết quả, sẽ giải quyết vấn đề về hiệu suất.
Trình hoạch định truy vấn cho thấy không có chỉ mục khi TOP 1
có mặt. (tính bằng dev).
Thay đổi truy vấn và sửa ứng dụng đang được tiến hành. Ra mắt mất một lúc.
Câu hỏi của tôi: Có cách nào có thể truy cập DBA để điều chỉnh hoặc điều chỉnh phiên bản SQL Server sản xuất để khắc phục vấn đề này trước khi ứng dụng thay đổi với truy vấn mới xuất hiện không?
SELECT TOP 1
subscription_id
FROM subscription AS sub
JOIN billing_info AS bi ON bi.billing_info_id = sub.billing_info_id
JOIN person_group AS apg ON apg.person_id = bi.person_id
JOIN pplan ON pplan.plan_id = sub.plan_id
JOIN product ON product.product_id = [plan].product_id
JOIN product_attribute ON product_attribute.product_id = product.product_id
WHERE apg.group_id = @Id
AND apg.start_date < GETDATE()
AND (apg.end_date IS NULL OR apg.end_date > GETDATE())
AND (sub.end_date IS NULL OR sub.end_date > GETDATE())
AND product_attribute.attribute_type = 'special feature'
AND product_attribute.attribute_data = '1'
ORDER BY sub.start_date ASC;
@ID
luôn luôn làm cho nó "đi hạt"? Nếu vậy, sau đó kiểm tra bằng một trong các giá trị đó và nắm bắt kế hoạch truy vấn thực tế. Điều đó sẽ cho bạn biết những gì đang xảy ra. Nếu các giá trị "xấu" không nhất quán, thì có vẻ như đây là đánh hơi tham số (xem câu trả lời của @ MartinSmith để biết giải pháp) hoặc nếu không thì vấn đề khóa liên quan đến cách khách hàng thực sự yêu cầu và sử dụng tập kết quả.