Dotaz č. 1 není elegantní způsob, jak toho dosáhnout... (NOT) IN SELECT je v pořádku pro několik položek, ale nemůže používat indexy (Seq Scan
).
Před použitím EXCEPT... takto se to udělalo pomocí 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 se objevil v Postgresu už dávno, dávno... Ale věřím, že například pomocí MySQL je to stále jediný způsob, jak toho dosáhnout pomocí indexových spojení.