SQL Server之delete top删除超大海量数据报错解决方案
以下示例删除 Testdb 表中所有行的 10%:
--删除测试数据
--以下示例删除 Testdb 表中所有行的 10%。
delete TOP (10) PERCENT from Testdelete
GO
--下面这句执行错误
----delete TOP (10) PERCENT from Testdelete order by PKID desc
----GO
当遇到超大数据时(百万、千万以上),可能会发现delete失去响应,无法删除任何数据,可以用以下方法轻松对超大海量数据进行制定删除:
delete from mis_action_log where id in (select top 100000 id from mis_action_log where input_time<'2022-1-1' order by id asc)
如果不需要排序,那么以下方法也是可以的:
delete top (10000) from mis_action_log where input_time<'2022-1-1'
此方法为SQL Server 2005以上版本才支持,而且不支持后面带排序效果,并且要删除的数量10000前后都必须有括号。
该文章在 2022/7/22 18:26:19 编辑过