mysql中高效查询(left join 和 group by),前提是加了索引
mysql中高效查询(left join 和 group by)
·
mysql牺牲了group by来增加left join的速度(前提是加了索引)。
user表:10万数据
实例1: 200秒左右
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
实例2:1秒多
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
更多推荐
所有评论(0)