[MSSQL]不傳回筆數提高效能

有關資料庫的討論, 都可以在這發表哦~~
回覆文章
頭像
tim
文章: 1288
註冊時間: 2008年 11月 26日, 00:49

[MSSQL]不傳回筆數提高效能

文章 tim » 2010年 6月 8日, 10:29

原文出處: http://edu.uuu.com.tw/data_article/arti ... 07tips.htm

在程式中, 在資料庫及 ap (包含web或windows app), 若是有比較大量的往返的資料傳輸, 會有一些效能的影響, 若是要提昇這個部分所造成的衝擊, 可以利用 nocount 這個旗標.

主要是因為這個 nocount 旗標預設是 off 的, 也就是說, 查詢或執行 sql command 時, 會有影響筆數的回傳, 若是資料量大而頻繁時, 如下:

代碼: 選擇全部

-- 建立資料表
CREATE TABLE count1
(cid int)
GO
-- 新增 100 筆資料列
DECLARE @cnt INT=1
WHILE @cnt<=100
BEGIN
   INSERT count1 VALUES(@cnt)
   SET @cnt +=1
END 
會一直有 [1筆資料列受影響][1 row affected]的執行結果回傳, 若這個訊息沒用到, 可以在執行前, 下達 set nocount on; 的旗標, 讓執行時, 不會回傳影響列數的資訊, 當然, 若是要查詢的話, 仍可以使用 @@ROWCOUNT 或是 ROWCOUNT_BIG() (當資料筆數超過21億筆時)來取得!
多多留言, 整理文章, 把經驗累積下來.....

回覆文章