SELECT中的SELECT SELECT查询速度慢

时间:2017-07-22 00:37:13

标签: mysql select subquery

以下查询执行大约需要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

1 个答案:

答案 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

或者,如果需要,可以在子查询内重复连接。