PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:NOT IN rispetto a EXCEPT differenza di prestazioni (modificato n. 2)

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.