保持MySQL表更新

时间:2017-05-02 13:08:49

标签: mysql

我有一个很大的用户数据表。此表格选择,分组和排序数据的速度很慢,并且它具有dateuser_id主键。 所以我想创建一个大表的副本'但只是每个用户的最新数据。

我尝试创建新的副本表,其中只有user_id主键。然后ON DUPLICATE KEY UPDATE

我应该使用触发器?怎么做最好的方法呢?

1 个答案:

答案 0 :(得分:0)

您可以使用INSERT语句创建初始重复表,使用ON DUPLICATE KEY UPDATE选择大用户数据表中的所有数据。

然后,您需要一个定期作业来运行相同的INSERT语句以保持副本表更新,或者需要在源表(大用户数据表)上触发。

触发器解决方案将包括ON INSERT触发器,如果​​表也更新,则还需要ON UPDATE触发器,如果​​应该处理DELETES,则还需要ON DELETE触发器。

解决方案之间的差异是

  • TRIGGER解决方案会保持副本表的实时更新, 但如果源表上有很多活动,那么就可以了 有性能影响,
  • 定期作业解决方案会导致副本表不是 总是最新的,但它可以在非高峰时段运行。

我有数据库,我使用这两种解决方案,更喜欢触发器版本作为默认值,并在需要时切换到定期作业解决方案。

示例:我使用定期作业解决方案,我将夜间作业中的一天数据汇总到聚合表中,因为只有当我有一整天的数据时才会使用聚合数据。