mysql - 帮助优化 MySQL 查询

标签 mysql query-optimization

我有一个 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 秒。如果可能的话,我想加快速度。

最佳答案

  1. USERS.id 是否定义为表的主键?应该是……
  2. 假设 INNODB,CLICKS.user_id 是否有外键约束以将其值与 USERS.id 关联?
  3. USERS.idCLICKS.user_id 是数字数据类型(IE:INT),而不是基于文本?
  4. 应添加索引(如果尚不存在):
    • CLICKS.user_id
    • USERS.全名
  5. 如果索引存在,have you tried refreshes the table statistics :

    ANALYZE TABLE USERS;
    ANALYZE TABLE CLICKS;
    

关于mysql - 帮助优化 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3072650/

相关文章:

php - 如何使用mysql将检索到的数据存储到临时表

mysql - AWS 停止/启动使 Wordpress 无响应

MySQL插入唯一且仅当条件为真

MySQL - 检索 7 个最近的时间戳,从最旧的开始排序

sql - 如何找出是什么锁定了我的表?

android - 如何将 SQLite 创建的数据上传到 MySQL 服务器?

sql - SQL 中的稀疏点积

sql-server - 在 SQL 查询中设置差异

php - get_terms() 检索 90K 行,产生性能问题

sql - Django Admin 多对多内联 View 的 SQL 查询过多