如何使用Spring快速删除数据库表内容?

时间:2014-10-28 10:08:39

标签: java spring postgresql jpa spring-data-jpa

我使用Spring-data-jpaCrudRepository将数据保存在postgres数据库中。

我每天都要更新完整的数据库内容,这意味着首先要检测特定表中的所有数据。

存储库提供了一种方法dao.deleteAll(),但由于我有大约500,000个条目,因此持续时间很长。

我该如何改善这个?

2 个答案:

答案 0 :(得分:4)

您可以在实体管理器上执行本机sql查询,并截断数据库

String sql = "TRUNCATE tbl_name;";
entityManager.createNativeQuery(sql).executeUpdate();

答案 1 :(得分:1)

TRUNCATE命令在大型表上要快得多,因为它只是在文件系统级别核对文件,而DELETE将每条记录标记为空闲而不减小文件大小,并在其上定义任何触发器正在运行。