我正在使用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