La requête #1 n'est pas la manière élégante de le faire... (NOT) IN SELECT convient pour quelques entrées, mais elle ne peut pas utiliser d'index (Seq Scan
).
Avant d'avoir EXCEPT... c'est comme ça que ça se faisait en utilisant un JOIN (HASH JOIN
):
SELECT sp.id
FROM subsource_position AS sp
LEFT JOIN subsource AS s ON (s.postion_id = sp.id)
WHERE
s.postion_id IS NULL
EXCEPT est apparu dans Postgres il y a très, très longtemps... Mais par exemple, en utilisant MySQL, je pense que c'est toujours le seul moyen d'y parvenir en utilisant des jonctions d'index.