我经常更新用户表,只是设置用户的上次看到的时间,我想知道是否有一种简单的方法来推迟它们并在短暂超时后将它们分组到一个查询中(5分钟或所以)。这会大大减少对我的用户数据库的查询。
答案 0 :(得分:2)
如果您执行UPDATE LOW_PRIORITY table ...
,则会确保它只会在没有执行任何其他操作时执行更新。除此之外,我认为MySQL内部没有太多选择。
此外,它现在是否会引发问题,或者您只是优化不是问题的东西?就个人而言,如果我批量更新这样的话,我只需在memcached中插入所有ID,并使用cronjob每5分钟更新一次。
答案 1 :(得分:1)
沃尔夫的建议应该可以解决问题。也可以创建一个没有任何索引的第二个表,并将所有数据插入到该表中。它甚至可以是内存表。然后你做一个定期的INSERT INTO table1 SELECT * FROM TABLE2 ON DUPLICATE KEY UPDATE ...转移到主表。