Được rồi, bây giờ tôi đã hoàn thành nghiên cứu của mình, đây là thỏa thuận:
Trong giao thức TDS, SET NOCOUNT ON
chỉ lưu 9 byte cho mỗi truy vấn trong khi văn bản "ĐẶT SỐ BẬT" chính nó là một con số khổng lồ 14 byte. Tôi từng nghĩ rằng 123 row(s) affected
được trả về từ máy chủ ở dạng văn bản thuần túy trong một gói mạng riêng biệt nhưng không phải vậy. Trên thực tế, đó là một cấu trúc nhỏ được gọi là DONE_IN_PROC
được nhúng trong phản hồi. Nó không phải là một gói mạng riêng biệt nên không lãng phí đường vòng.
Tôi nghĩ rằng bạn có thể tuân theo hành vi đếm mặc định hầu như luôn luôn mà không cần lo lắng về hiệu suất. Tuy nhiên, có một số trường hợp, trong đó việc tính toán số hàng trước sẽ ảnh hưởng đến hiệu suất, chẳng hạn như con trỏ chỉ chuyển tiếp. Trong trường hợp đó, NOCOUNT có thể là một điều cần thiết. Ngoài ra, hoàn toàn không cần phải tuân theo phương châm "sử dụng NOCOUNT bất cứ khi nào có thể".
Đây là phân tích rất chi tiết về tầm quan trọng của SET NOCOUNT
cài đặt:http://daleburnett.com/2014/01/everything-ever-w being-know-set-nocount/