Đây là câu hỏi 1 trên 2 liên quan đến OPTION (FAST 1);
Chúng tôi vừa nâng cấp cơ sở dữ liệu ERP của mình từ SQL 2000 EE lên 2008 R2 EE và chúng tôi đã nhận thấy sự gia tăng chặn trong cơ sở dữ liệu. Tôi đã thu hẹp nó xuống theo những gì tôi tin là tuyên bố vi phạm trong mã của nhà cung cấp đó là:
SELECT MAX(column)
FROM [table]
WHERE <condition>
OPTION (FAST 1);
Spid để lại một giao dịch mở và khóa trên bàn, chặn tất cả các khách hàng khác. Tuy nhiên, ứng dụng khách gọi dường như không còn tương tác với máy chủ để báo cho máy chủ biết rằng nó đã nhận được dữ liệu để kết thúc phiên.
Đọc tài liệu về Gợi ý truy vấn , tôi thấy tuyên bố này
NHANH TAY số
Chỉ định rằng truy vấn được tối ưu hóa để truy xuất nhanh số đầu tiên. Đây là một số nguyên không âm. Sau khi số đầu tiên được trả về, truy vấn tiếp tục thực hiện và tạo tập kết quả đầy đủ của nó.
Điều này khiến tôi tự hỏi liệu máy khách có bị lỗi giao tiếp nào đó không, máy chủ có giữ giao dịch mở không, xử lý toàn bộ kết quả sau khi các n
hàng đầu tiên được trả lại và để giao dịch mở? Quá trình này là một quy trình nội bộ vì vậy tôi thực sự không thể xem người dùng cuối thực hiện phiên để thực hiện và đây không phải là điều xảy ra mỗi khi quy trình nội bộ xảy ra. Tuy nhiên, nó chỉ được sử dụng bởi quy trình nội bộ.
Đọc câu trả lời của Remus trên SO, có vẻ như nó quá mức cần thiết cho sự đơn giản của truy vấn. Nhìn vào truy vấn, nếu họ nhận được nhiều hơn một kết quả từ việc không được liên kết MAX
thì có gì đó rất tanh.
Vì vậy, khi tôi chuẩn bị làm việc với nhà cung cấp, tôi đã tự hỏi liệu tôi có thể bắt đầu xác định chính xác các vấn đề chặn của chúng tôi trên thực tế là gợi ý truy vấn này đang được sử dụng hay không.
Xin vui lòng chỉnh sửa / yêu cầu chỉnh sửa vì tôi biết điều này thực sự có thể không rõ ràng.