我正在使用Spring-data-jpa
和CrudRepository
将数据保存在postgres
db中。如何使用Spring快速删除数据库表内容?
我每天都要更新完整的数据库内容,这意味着首先删除特定表中的所有数据。
存储库提供了一种方法dao.deleteAll()
,但是这个方法持续很长时间,因为我有大约500k条目。
我该如何改进?
我正在使用Spring-data-jpa
和CrudRepository
将数据保存在postgres
db中。如何使用Spring快速删除数据库表内容?
我每天都要更新完整的数据库内容,这意味着首先删除特定表中的所有数据。
存储库提供了一种方法dao.deleteAll()
,但是这个方法持续很长时间,因为我有大约500k条目。
我该如何改进?
您可以在实体管理器执行原生SQL查询,并截断数据库
String sql = "TRUNCATE tbl_name;";
entityManager.createNativeQuery(sql).executeUpdate();
的TRUNCATE
命令快得多大表上,因为它只是核武器的文件,在文件系统层面,而DELETE
马克每个记录为免费,而不会降低文件大小,任何触发他们正在运行的定义。
我怎么能使用'truncate'与Hibernate/HQL,如果可能的话? – membersound 2014-10-28 10:25:35
@membersound看到这个答案:http://stackoverflow.com/a/1262767/3304426 – Patrick 2014-10-28 10:42:12
请注意,即使实际上没有实际的数据行,如果定义了外键,在某些数据库中也不能使用truncate。 – Thierry 2014-10-28 14:08:19