[英]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.