2011-12-02 15 views
0

我想最有效地管理數據庫表和擺脫,將不能被訪問舊條目的舊的所有條目。是的,他們可能很容易堅持多年,但我只想擺脫它們。我可能每個月都會這樣做一次。將要保存的條目複製到新表格中,然後簡單地刪除舊錶格會更有效率嗎?或者應該在我設置的閾值後手動刪除每個條目。最有效的方法,以定期刪除數據庫一個多月

我使用MySQL使用JPA/JPQL JEE6與實體註釋和Java持久性管理。

謝謝

+0

如果我想保持者是說整個表的2%。把它們複製到一個新表格然後刪除舊錶格會更有意義嗎? – Randnum

+0

在http://stackoverflow.com/questions/8362362/how-to-continuously-remove-anything-older-than-the-newst-10-entries-of-a-mysqlda中接受的答案有什麼問題? –

+0

這些不是如何刪除項目的答案。答覆建議永不刪除,這不是真正的問題答案。提到刪除的一個答覆承認它效率不高。 – Randnum

回答

0

單個刪除查詢將是最有效的解決方案。從一個數據庫到另一個

複製數據可能會很長,如果你有大量的數據,以保持。這意味着您必須使用單個查詢檢索所有數據(如果要批量檢索,則爲多個數據),並在其他數據庫中發出大量插入語句。

使用JPQL,您可以發出一個查詢,刪除所有舊的語句,像

DELETE FROM Entity e WHERE e.date = ? 

這將轉換爲一個SQL查詢,數據庫將刪除所有不需要的記錄的照顧。

1

另一種解決方案是range or list PARTITIONING設計表,然後你可以使用ALTER TABLE來刪除或截斷舊分區。

這比使用DELETE更快,但它可能會變得複雜表的其他用途。

相關問題