我正在尝试最有效地管理数据库表并删除永远不会被访问的旧条目。是的,他们可能很容易坚持多年,但我只是想摆脱它们。我可以每个月做一次。将要保留的条目复制到新表中然后只需删除旧表就更有效了。或者,如果查询在我设置的阈值之后手动删除每个条目。
我正在使用带有JPA / JPQL JEE6的MySQL,带有实体注释和Java持久性管理器。
由于
答案 0 :(得分:1)
另一种解决方案是使用range or list PARTITIONING设计表,然后您可以使用ALTER TABLE删除或截断旧分区。
这比使用DELETE快得多,但它可能会使表的其他用途复杂化。
答案 1 :(得分:0)
单个删除查询将是最有效的解决方案。
如果要保留大量数据,将数据从一个数据库复制到另一个数据库可能会很长。这意味着您必须使用单个查询检索所有数据(如果要批处理,则检索多个数据),并在其他数据库中发出大量插入语句。
使用JPQL,您可以发出单个查询来删除所有旧语句,例如
DELETE FROM Entity e WHERE e.date = ?
这将转换为单个SQL查询,数据库将负责删除所有不需要的记录。