MySQL - SELECT WHERE field IN (subquery) - Extremely slow why?

前端 未结 10 2191
情书的邮戳
情书的邮戳 2020-11-27 10:06

I\'ve got a couple of duplicates in a database that I want to inspect, so what I did to see which are duplicates, I did this:

SELECT relevant_field
FROM some         


        
10条回答
  •  清歌不尽
    2020-11-27 10:16

    The subquery is being run for each row because it is a correlated query. One can make a correlated query into a non-correlated query by selecting everything from the subquery, like so:

    SELECT * FROM
    (
        SELECT relevant_field
        FROM some_table
        GROUP BY relevant_field
        HAVING COUNT(*) > 1
    ) AS subquery
    

    The final query would look like this:

    SELECT *
    FROM some_table
    WHERE relevant_field IN
    (
        SELECT * FROM
        (
            SELECT relevant_field
            FROM some_table
            GROUP BY relevant_field
            HAVING COUNT(*) > 1
        ) AS subquery
    )
    

提交回复
热议问题