我们现在使用的工具需要删除日志tables.Right,如果any.This很耗时,有时在生产中需要12小时才能删除数据,我们将保留100万行并删除其余行,这会影响日常transactions.Is,如果有任何其他方法可以高效删除日志表,而不影响日常事务。
假设我们想要保留一百万行:
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)
有什么方法可以优化这两个查询吗?
发布于 2018-03-20 18:30:16
插入到一个较小的表中比从一个较大的表中删除要快得多。在这种情况下,您可以将想要保留的记录插入到临时表中。如果日志记录不是问题,和引用完整性将允许它,您可以简单地:
发布于 2018-03-20 18:30:26
你想一次删除一万行。
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
https://stackoverflow.com/questions/49391599
复制相似问题