我有一个 MySQL 查询,如下所示
SELECT
count(`clicks`.`user_id`) as total,
`users`.`fullname`
FROM
`users`,
`clicks`,
WHERE
`users`.`id` = `clicks`.`user_id`
GROUP BY
`clicks`.`user_id`
ORDER BY
`total` desc
LIMIT
0,20;
我正在对几个按钮式游戏进行统计。它有一个用户表和一个点击表。它记录来自特定用户的点击。用户可以随时单击该按钮。一天二十次点击,另一天三十次,等等。它们并不是连续发生的。
目前,大约有大约 2000 个用户的大约 18 万次点击。此查询平均运行时间为 1.38 秒。如果可能的话,我想加快速度。
最佳答案
USERS.id
是否定义为表的主键?应该是……- 假设 INNODB,
CLICKS.user_id
是否有外键约束以将其值与USERS.id
关联? USERS.id
和CLICKS.user_id
是数字数据类型(IE:INT),而不是基于文本?- 应添加索引(如果尚不存在):
CLICKS.user_id
USERS.全名
如果索引存在,have you tried refreshes the table statistics :
ANALYZE TABLE USERS; ANALYZE TABLE CLICKS;
关于mysql - 帮助优化 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3072650/