Zapytanie #1 nie jest eleganckim sposobem na zrobienie tego... (NIE) IN SELECT jest w porządku dla kilku wpisów, ale nie może używać indeksów (Seq Scan
).
Zanim miałeś OPRÓCZ... tak to robiono za 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
Z WYJĄTKIEM pojawił się w Postgresie dawno, dawno temu... Ale na przykład używanie MySQL, uważam, że jest to nadal jedyny sposób na osiągnięcie tego przy użyciu połączeń indeksów.