我使用Spring-data-jpa
和CrudRepository
将数据保存在postgres
数据库中。
我每天都要更新完整的数据库内容,这意味着首先要检测特定表中的所有数据。
存储库提供了一种方法dao.deleteAll()
,但由于我有大约500,000个条目,因此持续时间很长。
我该如何改善这个?
答案 0 :(得分:4)
您可以在实体管理器上执行本机sql查询,并截断数据库
String sql = "TRUNCATE tbl_name;";
entityManager.createNativeQuery(sql).executeUpdate();
答案 1 :(得分:1)
TRUNCATE
命令在大型表上要快得多,因为它只是在文件系统级别核对文件,而DELETE
将每条记录标记为空闲而不减小文件大小,并在其上定义任何触发器正在运行。