Một truy vấn như câu hỏi dưới đây được đảm bảo không trả về bất kỳ hàng nào, mất bất kỳ thứ gì từ 0 đến 160 giây trên một trong các máy chủ của chúng tôi:
select col1, col2, col3
from tab1
where 0 = 1
Hai tuần trước, điều này đã xảy ra sáu lần trong khoảng thời gian 48 giờ. Tuần trước cùng một truy vấn mất ~ 0 giây. Tôi có nhật ký SQL của ứng dụng của chúng tôi nhưng chưa tìm thấy bất kỳ nghi phạm nào. Bên cạnh đó, tôi nghĩ rằng một truy vấn loại 0 / trong đó 0 = 1 không bao giờ đánh vào các trang dữ liệu, vì vậy nó có thể chống lại các khóa dữ liệu ở cấp hàng / trang / bảng không? Lược đồ không bị chạm bởi bất kỳ SQL (đã biết) nào.
Vì vấn đề không nhất quán và máy chủ đang chịu tải rất nặng nên tôi muốn hiểu lý thuyết đằng sau những gì đang xảy ra trước khi đính kèm hồ sơ SQL. Các truy vấn khác chạy mà không có vấn đề trong những chậm trễ. Một vấn đề được biết đến trong ứng dụng là một số lượng lớn các truy vấn SQL được tạo động - khoảng 200 nghìn truy vấn duy nhất trong tổng số 850k truy vấn (đã ghi) trong khoảng thời gian 48 giờ, điều này có thể gây ra vấn đề như thế này không?
Máy chủ đang chạy phiên bản tiêu chuẩn SQL Server 2005, RAM 96 GB, đĩa trên SAN và 4 CPU / 16 lõi. Các tệp cơ sở dữ liệu và các nhóm tệp được tối ưu hóa tốt và không phải là vấn đề (nhưng chúng tôi đang xem xét vấn đề này một cách riêng biệt).
Bất kỳ con trỏ nơi để tìm được đánh giá rất cao.
Chỉnh sửa: Hoàn hảo! Phát lại truy vấn để thêm kế hoạch thực hiện và mất 1 phút 35 giây. Đây là kế hoạch thực hiện và ảnh chụp màn hình hiển thị thời lượng truy vấn:

Chỉnh sửa 2: chi tiết thời gian thống kê cho lần chạy thứ hai. Có vẻ như luôn chậm chạp ngay bây giờ, vì vậy chúng tôi sẽ gắn hồ sơ và perfmon:
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 97402 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
