利用@@rowcount 減少不必要查詢動作

  • 13535
  • 0

摘要:利用@@rowcount 減少不必要查詢動作

主要功能大概是個計數器.

原本流程 :
    先 select  看有沒有資料 , 有資料跑 update 沒資料跑 insert ,
但這樣產生了兩次 sql 連線與執行 , 假設狀況是 update ,更多跑了一次 資料
查詢的動作 ,

修正後流程:
         一次  SQL  連 線 執 行 就 可 以 搞 定 , 流 程 主 要 變 成   , 不管
三七二十一先做 update , 透過 @@rowcount 去判定剛剛有沒有 update 到
資料,沒有的話在做 insert 的動作 , @@rowcount 是個系統變數,判定這個
絕對比 select 省成本多了 , 也因為 @@rowcount 的關係 , 其實 update 時
就處理了原本流程處理的 select 要的目的...

應用範例如下:
declare @dt smalldatetime , @xx_id varchar(15);
set @dt = '2009/10/22';
set @x_id = 'X2009041700008';
update x_counter set x_Nums = x_Nums + 1
where convert(varchar(4), x_Date, 120) = convert(varchar(4), @dt, 120) and x_ID = @x_id;
if @@rowcount = 0 begin
 insert into
x_counter (
  x_ID, x_Nums, x_Date
 ) values (
  @
xx_id , 1 , @dt
 );
end