最有效的方法是定期删除数据库中超过一个月的所有条目

时间:2011-12-02 21:49:36

标签: mysql database jpa jpql

我正在尝试最有效地管理数据库表并删除永远不会被访问的旧条目。是的,他们可能很容易坚持多年,但我只是想摆脱它们。我可以每个月做一次。将要保留的条目复制到新表中然后只需删除旧表就更有效了。或者,如果查询在我设置的阈值之后手动删除每个条目。

我正在使用带有JPA / JPQL JEE6的MySQL,带有实体注释和Java持久性管理器。

由于

2 个答案:

答案 0 :(得分:1)

另一种解决方案是使用range or list PARTITIONING设计表,然后您可以使用ALTER TABLE删除或截断旧分区。

这比使用DELETE快得多,但它可能会使表的其他用途复杂化。

答案 1 :(得分:0)

单个删除查询将是最有效的解决方案。

如果要保留大量数据,将数据从一个数据库复制到另一个数据库可能会很长。这意味着您必须使用单个查询检索所有数据(如果要批处理,则检索多个数据),并在其他数据库中发出大量插入语句。

使用JPQL,您可以发出单个查询来删除所有旧语句,例如

DELETE FROM Entity e WHERE e.date = ?

这将转换为单个SQL查询,数据库将负责删除所有不需要的记录。