La query n. 1 non è il modo elegante per farlo... (NON) IN SELECT va bene per alcune voci, ma non può usare gli indici (Seq Scan
).
Prima di EXCEPT... ecco come si faceva usando 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 è apparso in Postgres molto, molto tempo fa... Ma per esempio, usando MySQL credo che questo sia ancora l'unico modo per ottenere questo risultato usando le giunzioni di indice.