我感兴趣的问题在
之下 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。
有更好的方法来完成这项工作吗?
答案 0 :(得分:1)
首先检查是否为date_log.user_id和meeting_date设置了索引。
那么你是否考虑使用'distinct'而不是group?
Select count(distinct a.id)
答案 1 :(得分:1)
如果您只需要计数,可以将此查询设为左连接,并查看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