0
我有一個表像聊天消息:只保留N個最近記錄的表格?
id | fk_user_1_id | fk_user_2_id | message | timestamp
我只需要保持最近50個郵件每左右好友配對。什麼是最簡單的方法來做到這一點?一個可怕的方法是:
- 插入一條新消息。
- 選擇最近的50條消息,按逆時間順序排序。
- 如果結果有超過50條記錄,請抓取第50條記錄的時間戳。
- 刪除比該時間戳更早的朋友對的所有記錄。
有沒有更簡單的方法來做到這一點?我正在使用mysql。
感謝
也許你可以建立一個'TRIGGER'上'INSERT'刪除第51記錄,如果存在一個。 – tadman
@tadman不刪除第51條記錄,我想他想刪除第50條記錄。 –
我猜這在這種情況下不是非常重要,但是你的算法容易受到競爭條件的影響。如果兩個事務試圖同時執行它,則最終可能會有超過50行。順便說一句,@ BrettFromLA的答案也有(略有不同)的競爭條件。 –