2010-08-08 37 views
4

我有一張包含約3500萬行的表格。每個具有大約35個整數值和一個時間值(最後更新) 該表具有兩個索引 primary - 使用表列中的兩個整數值 Secondary - 使用來自主鍵+另一個整數值的第一個整數。什麼是刪除舊記錄的更快方法

我想根據日期字段刪除舊記錄(約2000萬)。

什麼是最快的方式: 1.根據日期字段刪除原樣? 2.按日期創建另一個索引,然後按日期刪除。

將會有一次刪除大部分數據,然後每週刪除更小的部分。

有沒有另一種方式更有效地做到這一點?

回答

8

它可能是更快地創建一個包含你想保留的行的新表,刪除舊錶,然後重命名新表

+0

好主意!我將在開發計算機上運行測試以瞭解它是如何工作的。 – Nir 2010-08-08 08:54:59

3

對於每週的缺失有關日期字段的索引會加快速度。

0

最快(但並非最簡單) - 我認爲 - 是根據日期將記錄分割成多個 表格,例如:給定的一週,然後在整個事情中有一個所有這些表的常規查詢的聯合表(所以你的查詢將不會改變)。你會每週都創建新的表格並重新定義聯合表格。

當您希望刪除舊記錄時,只需重新創建聯合表,將舊錶中的記錄留出,然後刪除這些遺留的記錄(記住在刪除之前截斷,具體取決於您的文件系統)。這可能是使用MySQL最快的方式。

儘管管理混亂:)

相關問題