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
速度不快,但是可以防止锁升级,避免锁表