【发布时间】:2013-09-07 20:30:58
【问题描述】:
我在这里尝试实现的是一个条件,其中一个 sqlite 数据库只保存最近的 1000 条记录。我有每条记录的时间戳。 立即发生的低效逻辑之一是检查记录总数。如果它们超过 1000,则只需删除掉出外围的那些。
但是,我必须对每个 INSERT 进行此检查,这会使事情变得非常低效。
还有什么更好的逻辑?我们可以用触发器做点什么吗?
SO:-
【问题讨论】:
-
你有没有想过每次插入时表达到 1000 条记录的场景,你必须执行删除,最终 count(someId) 并不便宜。最好让记录保持增长并定期清理旧记录。
-
按照同样的思路,维护小表大小的计划作业可能会满足您的要求。还可以考虑将记录移动到存档表而不是删除它们。你永远不知道什么时候你可能有理由去看它们。
-
@danisius - 你提出的方案在任何时候都是可能的,因为一旦记录数达到 1000,每次插入都会出现这种情况。
-
@DanBracuk 我绝对可以考虑存档,这也是一个好主意,但我正在努力寻找一种在数据库中而不是通过连接到数据库的应用程序来执行此操作的方法。我正在使用 Flex,所以如果我倾向于使用基于计时器的计划作业来尝试存档记录,那会让事情变得更糟。