【发布时间】:2018-08-29 16:52:43
【问题描述】:
我们正在使用需要删除日志表的工具。现在,我们保留 100 万行并删除其余行(如果有)。这很耗时,有时在生产中需要 12 小时才能删除数据,影响日常事务。有没有其他方法可以有效删除日志表,不影响日常事务。
假设我们想要保留 100 万行:
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)
有什么办法可以优化这两个查询吗?
【问题讨论】:
-
您实际使用的是哪个 DBMS?细节会有所不同,但您是否尝试过批量删除而不是整套删除?
-
SQL Server 还是 Oracle?你们都标记了。
-
它适用于 mssql 和 oracle
-
我没试过批量删除,有用吗?
-
是的,批量删除是有益的,有时甚至需要(否则会因数据库本身的日志记录问题而超时)
标签: sql sql-server database oracle oracle11g