繁体   English   中英

这个右连接查询太慢了

[英]This right join query is too slow

我感兴趣的问题如下

    SELECT COUNT(a.id) 
      FROM users AS a 
RIGHT JOIN date_log AS b 
        ON a.id = b.user_id 
     WHERE
           b.meeting_date BETWEEN '2012-06-01' 
                      AND DATE_ADD('2012-06-01', INTERVAL 1 MONTH) 
  GROUP BY a.id

但是,当我尝试从大型数据库中选择数据时,它太慢了。 我在查询中添加了“分组依据”术语,用于删除重复的ID。

有没有更好的方法来完成这项工作?

首先检查是否为date_log.user_id和meeting_date设置了索引。

那你有没有使用'distinct'而不是group?

Select count(distinct a.id)

如果您只需要计数,可以将此查询设置为左连接,并查看MySQL是否有更好的时间执行它(我不确定它实际上是如何执行RIGHT JOIN,但我可以用低效的方式想象它与LEFT相比......

SELECT users.id, count(users.id) as user_count
FROM 
  date_log
  LEFT JOIN users ON date_log.user_id = users.id
WHERE
  date_log.meeting_date BETWEEN '2012-06-01' AND DATE_ADD('2012-06-01', INTERVAL 1 MONTH)
GROUP BY users.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM