[C#]提高 Update、Delete 效能
昨天示範了如何使用批次處理新增作業,
今天朋友詢問 SqlBulkCopy 沒有提供批次處理更新、刪除作業,
是否有其他辦法使用批次處理更新和刪除作業呢?
答案是有的,我想到有2個辦法,1.利用 SqlDataAdapter. 2.修改我之前的寫法3
下面分別測試這兩種批次寫法效能表現如何(逐筆更新寫法就不在測試效能了)
note:Delete寫法大同小異
模擬25500筆資料異動
寫法1
CREATE proc usp_updateByTest
@c1 int,@c2 varchar(30),@c3 datetime,@c4 bit,@c5 real
as
UPDATE dbo.Test
SET c2=@c2 ,c3=@c3,c4=@c4,c5=@c5
where c1=@c1
執行寫法1
5次執行時間如下
5次花費時間平均(ms): 1167.8
寫法2
CREATE proc [dbo].[usp_UpdateByTestType]
@mytable utype_Test READONLY
as
UPDATE dbo.Test
SET c2=t2.c2 ,c3=t2.c3,c4=t2.c4,c5=t2.c5
from dbo.Test t1 join @mytable t2
on t1.c1=t2.c1
執行寫法2
5次執行時間如下
5次花費時間平均(ms): 488.6
結果
寫法1批次更新花費時間 | 寫法2批次更新花費時間 |
1167.8 ms |
488.6 ms |
參考