以下查询执行大约需要3.55秒。很明显,子查询导致了大部分问题,因为当我自己运行类似的查询时,它需要0.981秒。我把表格编入索引,所以我不确定我做错了什么。有什么想法吗?
SELECT
u.user_id,
u.username,
u.fullname,
u.avatar,
u.city,
u.state,
(
SELECT
COUNT(*) AS total_followers
FROM
FollowerRelationship fr
WHERE
fr.user_id = u.user_id
GROUP BY
fr.user_id
) AS total
FROM
Users u
ORDER BY
total DESC
答案 0 :(得分:0)
您正在select子句中加入子查询,其中包含' outside'子查询,这可能会减慢速度。如果你的索引设置正确,并且fr
。user_id不可为空,那么你的用户表上的连接就没有必要了,因为你要点击整个FollowerRelationship
(我假设你需要用户在两种情况下都是关注者和Users
表:联接不会改变COUNT
的数量。
SELECT
u.user_id,
u.username,
u.fullname,
u.avatar,
u.city,
u.state,
(
SELECT
COUNT(*) AS total_followers
FROM
FollowerRelationship fr
GROUP BY
fr.user_id
) AS total
FROM
Users u
ORDER BY
total DESC
或者,如果需要,可以在子查询内重复连接。