La sous-requête est exécutée pour chaque ligne car il s'agit d'une requête corrélée. On peut faire d'une requête corrélée une requête non corrélée en sélectionnant tout dans la sous-requête, comme ceci :
SELECT * FROM
(
SELECT relevant_field
FROM some_table
GROUP BY relevant_field
HAVING COUNT(*) > 1
) AS subquery
La requête finale ressemblerait à ceci :
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
)