日期:2014-05-17  浏览次数:20380 次

T-SQL 大数据量删除优化方案
SQL 2008 R2 数据库
表中有数据百万级
然后每次要根据where 删除其中的数据,条件各参数都不同,删除量在10W-20W。
依次执行DELETE效率太低下,求高效率方法:
现语句:DELETE FROM [Temp] WHERE [ID] = '299897' AND [OrdID] = 'X-UUDX' AND [WhereTYPE] = 'XY'

------解决方案--------------------
那还不简单:
1、select * into #t from tb where xxxx  --这里是不要删除的数据
2、trucate table tb
3、insert into tb select * from #t
4、drop table #t
------解决方案--------------------
WHILE 1 = 1
BEGIN
DELETE TOP(5000) FROM [Temp] WHERE [ID] = '299897' AND [OrdID] = 'X-UUDX' AND [WhereTYPE] = 'XY'

  IF @@rowcount < 5000 BREAK;
END
GO

速度不快,但是可以防止锁升级,避免锁表