在SQL Server2012中,我需要从具有4-5个索引的表中删除100+百万行。
我该如何继续呢?我猜事务日志将是满的,因此将取消事务。
谢谢你的帮忙
发布于 2019-03-22 00:00:08
根据表的大小,您可能会发现清空和重新填充会更快:
create table temp_t
select *
from t
where <i want to keep conditions>;
truncate table t;
insert into t
select *
from temp_t;
从长远来看,您可能希望添加分区,以便更容易删除行。例如,按日期分区将允许您以最小的开销删除旧记录。
发布于 2019-03-22 00:09:57
如果你
中删除所有行
它应该足以执行分块删除。在SO和dba.SE (例如this one或that one)上的各种相关问题中可以找到许多示例。为了使这个答案更加完整,我将在这里引用其中一个示例(取自this answer by gbn,稍作修改):
SELECT 'Starting' --sets @@ROWCOUNT
WHILE @@ROWCOUNT <> 0
DELETE TOP (10000) MyTable WHERE <some condition>
https://stackoverflow.com/questions/55284519
复制相似问题