2008-08-25 34 views

Trả lời

18

Từ SQL BOL:

SET NOCOUNT ON ngăn chặn việc gửi các thông điệp DONE_IN_PROC cho khách hàng cho mỗi câu lệnh trong một lưu trữ thủ tục. Đối với các thủ tục được lưu trữ chứa một số câu lệnh không trả lại nhiều dữ liệu thực tế, cài đặt SET NOCOUNT thành ON có thể cung cấp tăng hiệu suất đáng kể, vì lưu lượng truy cập mạng giảm đáng kể.

Xem http://msdn.microsoft.com/en-us/library/ms189837.aspx để biết thêm chi tiết.
Ngoài ra, bài viết này trên SQLServerCentral là rất tốt về chủ đề này:
Performance Effects of NOCOUNT

+0

Đó là * đặc biệt * bắt buộc trong các truy vấn sử dụng con trỏ. –

8

Và nó không chỉ là lưu lượng mạng được giảm. Có một tăng nội bộ cho SQL Server vì kế hoạch thực hiện có thể được tối ưu hóa do giảm một truy vấn phụ để tìm ra có bao nhiêu hàng bị ảnh hưởng.

4

Đơn giản là dừng thông báo hiển thị số hàng được thực hiện để gửi/hiển thị, cung cấp lợi ích hiệu suất, đặc biệt nếu bạn có nhiều câu trả lời. Nó cải thiện hiệu suất vì ít dữ liệu được gửi qua mạng (giữa máy chủ sql và giao diện người dùng).

thêm tại BOL: SET NOCOUNT

1

tôi luôn luôn có nó thiết lập để ON vì những lý do trên, nhưng nếu bạn có nhiều hơn 1 kết quả đặt trong proc của bạn nó có thể lộn xộn lên mã khách hàng

0

Cá nhân tôi thích để bật NOCOUNT bật cho các truy vấn chạy theo cách thủ công và sử dụng nhiều câu lệnh Print cho thông báo gỡ lỗi đầu ra. Bằng cách này, đầu ra của bạn sẽ bớt giống:

 
Updating usernames 
(287 rows updated) 

Done 
Updating passwords 
(287 rows updated) 

Done 
Doing the next thing 
(1127 rows updated) 

Done 

Và giống như

 
Updating usernames 
Done 

Updating passwords 
Done 

Doing the next thing 
Done 

Tùy thuộc vào sự nhạy cảm của những gì bạn đang cập nhật, đôi khi nó là hữu ích để bao gồm các tội; tuy nhiên, đối với các kịch bản phức tạp với rất nhiều đầu ra, tôi thường muốn bỏ chúng ra.

0

SET NOCOUNT ON là một tuyên bố trực tuyến, máy chủ Sql gửi thư trở lại máy khách.điều này được thực hiện cho mọi quá trình (ví dụ: chọn, chèn, cập nhật, xóa).nếu bạn tránh những thông báo này, chúng tôi có thể cải thiện hiệu suất tổng thể cho cơ sở dữ liệu của chúng tôi và cũng làm giảm lưu lượng mạng

Đối với EX:

bảng kê khai @a (id int)

bộ nocount trên

chèn @ lựa chọn 1 công đoàn chọn 2

đặt số lượng tắt

0

Dừng thông báo cho biết số hàng bị ảnh hưởng bởi Trans câu lệnh act-SQL được trả về như là một phần của kết quả.

Các vấn đề liên quan