簡體   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