首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高效地从表中删除数据

高效地从表中删除数据
EN

Stack Overflow用户
提问于 2018-03-21 02:22:24
回答 2查看 90关注 0票数 0

我们现在使用的工具需要删除日志tables.Right,如果any.This很耗时,有时在生产中需要12小时才能删除数据,我们将保留100万行并删除其余行,这会影响日常transactions.Is,如果有任何其他方法可以高效删除日志表,而不影响日常事务。

假设我们想要保留一百万行:

代码语言:javascript
运行
复制
Select query:

Select Query:select min(date) from (select date from table order by date desc) where rownum <= 1000000

Delete Query:

Delete Query:Delete from table where date > (result of select query)

有什么方法可以优化这两个查询吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-21 02:30:16

插入到一个较小的表中比从一个较大的表中删除要快得多。在这种情况下,您可以将想要保留的记录插入到临时表中。如果日志记录不是问题,引用完整性将允许它,您可以简单地:

  • 将您要从日志表中保留的记录插入到临时表中。

  • Drop your log table.

  • Rename your staging table to log.
票数 3
EN

Stack Overflow用户

发布于 2018-03-21 02:30:26

你想一次删除一万行。

代码语言:javascript
运行
复制
delete top (10000) from tableA where condition1 <> xyz
while (@@rowcount >0)
begin
     delete top (10000) from tableA where condition1 <> xyz

end
delete from tablea where condition1 <> xyz

这样你就不会有很大的事务日志。您可能希望尝试行数(有些人使用1000行),但这非常依赖于机器中的活动量、驱动器的速度以及日志文件的位置和配置。您说要保留某些行,所以我添加了condition1 <> xyz

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49391599

复制
相关文章

相似问题

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