首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除1.3亿行

删除1.3亿行
EN

Stack Overflow用户
提问于 2019-03-21 23:57:57
回答 2查看 350关注 0票数 1

在SQL Server2012中,我需要从具有4-5个索引的表中删除100+百万行。

我该如何继续呢?我猜事务日志将是满的,因此将取消事务。

谢谢你的帮忙

EN

回答 2

Stack Overflow用户

发布于 2019-03-22 00:00:08

根据表的大小,您可能会发现清空和重新填充会更快:

代码语言:javascript
运行
复制
create table temp_t
    select *
    from t
    where <i want to keep conditions>;

truncate table t;

insert into t
    select *
    from temp_t;

从长远来看,您可能希望添加分区,以便更容易删除行。例如,按日期分区将允许您以最小的开销删除旧记录。

票数 3
EN

Stack Overflow用户

发布于 2019-03-22 00:09:57

如果你

中删除所有行

它应该足以执行分块删除。在SO和dba.SE (例如this onethat one)上的各种相关问题中可以找到许多示例。为了使这个答案更加完整,我将在这里引用其中一个示例(取自this answer by gbn,稍作修改):

代码语言:javascript
运行
复制
SELECT 'Starting' --sets @@ROWCOUNT
WHILE @@ROWCOUNT <> 0
    DELETE TOP (10000) MyTable WHERE <some condition>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55284519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档