【发布时间】:2018-11-18 21:21:36
【问题描述】:
这个查询大约需要 7 秒 (!):
UPDATE summary_daily_users
SET clicks = clicks + 1
WHERE sum_date = '2018-11-14'
AND user_id = 120
我跑了EXPLAIN 得到了这个:
该表有大约 300,000 条记录,sum_date 是 PRIMARY,user_id 是 PRIMARY。
关于如何使UPDATE工作更快的任何建议?
【问题讨论】:
-
我建议在
sum_date和user_id上创建一个索引。 -
表的大小是多少,有多少项与您的 where 子句匹配?
-
用表记录数更新了我的问题
-
该表是否还有其他索引,有多少字段?
-
表是 InnoDB 吗? innodb_buffer_pool_size 是多少? innodb_log_filesize 是多少?什么MySQL版本?这些更新,我认为它们很频繁,sum_date 总是最近的吗?
SHOW CREATE TABLE summary_daily_users也需要输出。您已将sum_date和user_id列为主要,这只有在复合时才会发生 -SHOW CREATE TABLE信息将澄清这一点。
标签: mysql database performance