0
我有一個很大的用戶數據表。此表選擇,分組和訂購數據的速度很慢,它具有date
和user_id
主鍵。 所以我想創建一個「大表副本」,但只是每個用戶的最新數據。保持MySQL表更新
我嘗試創建新的副本表,其中只是user_id主鍵。然後在重複密鑰更新
我應該使用觸發器?如何最好的方式來做到這一點?
我有一個很大的用戶數據表。此表選擇,分組和訂購數據的速度很慢,它具有date
和user_id
主鍵。 所以我想創建一個「大表副本」,但只是每個用戶的最新數據。保持MySQL表更新
我嘗試創建新的副本表,其中只是user_id主鍵。然後在重複密鑰更新
我應該使用觸發器?如何最好的方式來做到這一點?
您可以使用ON DUPLICATE KEY UPDATE使用INSERT語句從大用戶數據表中選擇所有數據,從而創建初始重複表。
然後,您需要一個循環作業來運行相同的INSERT語句以更新副本表,或者在源表(大用戶數據表)上觸發一個觸發器。
觸發器解決方案將包含一個ON INSERT觸發器,並且如果表也被更新,您還需要一個ON UPDATE觸發器,並且如果應該處理DELETES,則還需要一個ON DELETE觸發器。
的解決方案之間的差異是
我有數據庫,我使用兩種解決方案,首選觸發器版本作爲默認值,並根據需要切換到定期作業解決方案。
示例:我使用定期作業解決方案,將夜間作業中的數天數據彙總到聚合表中,因爲彙總數據僅在我有全天數據的情況下才會使用。
兩者都是可行的解決方案。哪一個使用?那麼,這取決於你的要求。 – Shadow
我的要求是創建表格的重複和保持數據更新的最佳方式 –
這只是您的要求的一部分。你需要實時更新副本嗎?只是定期?你的系統能否真正支持實時同步?沒有評估這些問題,無法回答你的問題。 – Shadow