我有一張非常大的表,我想從中刪除舊行。表的例子:如何從大型MySQL表中高效地刪除過期的行
| customer_id | first_purchase_date | last_purchase_date |
|<primary key>| | <index> |
**我使用這個示例表爲參數的緣故。有問題的表不是客戶表。真正的桌子在過去的2個月裏已經增長到28GB,用於計算僅需要2周曆史數據的東西。
我想要做的就是從該表還沒有在過去的一年裏購買任何東西刪除客戶。即delete from table where last_purchase_date < now() - interval 1 year;
的simpy刪除這樣會在數據庫上過於昂貴。我知道一個分區可以用來截斷舊的行,但我不知道如何有效地實現它。
此外,如果客戶要購買的東西,然後該行可能通過更新last_purchase_date移動到不同的分區。這不會太貴嗎?
預先感謝您的任何方向!
您確定要刪除您的客戶嗎? –
如果性能是您的問題,Partinion on date可以獲得更好的結果,但這是您的問題嗎?什麼是「一張非常大的桌子」?給一些數字。刪除客戶不是一個好主意,將他們轉移到「存檔」表格會更好。你打算如何刪除它們?將是一個每年的過程(到2017年底,刪除全部2016年)或每日過程(每天結束時,刪除那些<[date - 1year])。總之,你真的需要添加更多的信息 –
有問題的表不是真正的客戶羣 – AYR