mysql中高效查詢(left join 和 group by),前提是加了索引
阿新 • • 發佈:2019-02-20
mysql犧牲了group by來增加left join的速度(前提是加了索引)。
user表:10萬資料
例項1: 200秒左右
例項2:1秒多SELECT U.id, A.favorite_count FROM (SELECT id from user) U LEFT JOIN ( -- 點贊數 SELECT favorite_by AS user_id, SUM(favorite_count) AS favorite_count FROM favorite GROUP BY favorite_by ) A ON U.id=A.user_id LEFT JOIN ( -- 評論數量 SELECT user_id, COUNT(*) AS comment_count FROM photo_comment GROUP BY user_id ) B ON U.id=B.user_id
select uf.user_id , uf.favorite_count, COUNT(pc.id) as comment_count from ( select u.id as user_id , SUM(f.favorite_count) as favorite_count from (SELECT id from user) u LEFT JOIN favorite f on f.favorite_by = u.id GROUP BY u.id ) uf LEFT JOIN photo_comment pc on pc.user_id = uf.user_id GROUP BY uf.user_id