我已經使用SET NOCOUNT ON
禁用了行計數,但似乎sqlserver仍在計數行。SQL Server不斷對行進行計數
USE Northwind
SET NOCOUNT ON;
SELECT * FROM Products p
SELECT @@ROWCOUNT AS 'RowCount';
查詢返回77行計數,爲什麼?
我已經使用SET NOCOUNT ON
禁用了行計數,但似乎sqlserver仍在計數行。SQL Server不斷對行進行計數
USE Northwind
SET NOCOUNT ON;
SELECT * FROM Products p
SELECT @@ROWCOUNT AS 'RowCount';
查詢返回77行計數,爲什麼?
SET NOCOUNT ON;
防止在執行存儲過程時返回rowcount。它對@@ rowcount沒有影響。
看到http://msdn.microsoft.com/en-us/library/ms189837.aspx具體信息
即使當SET NOCOUNT爲ON @@ ROWCOUNT功能更新。
SET NOCOUNT ON禁止在存儲過程中爲每條語句向客戶端發送DONE_IN_PROC消息。對於包含幾個語句不返回多少實際的數據,或內含的Transact-SQL循環過程的存儲過程,SET NOCOUNT設置爲ON可提供顯著的性能提升,因爲網絡流量大大減少。」
的nocount
設置不計數,行存到數據庫,它保持它返回的update
和insert
查詢結果集
例:
create procedure test1
as
insert into Products (ProductName) values ('Fork')
select scope_identity() as ProductId
調用該PROC edure將返回兩個結果集,第一個結果集爲空,並且具有受影響的行數爲1的信息,第二個結果集包含具有產品ID的記錄。
VS:
create procedure test1
as
set nocount on
insert into Products (ProductName) values ('Fork')
select scope_identity() as ProductId
調用該程序將只返回一個結果集,包含產品ID。
這是否意味着設置nocount對性能沒有影響? –
與存儲過程一起使用會產生積極影響 –