PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:diferença de desempenho NOT IN versus EXCEPT (editado #2)


A consulta #1 não é a maneira elegante de fazer isso... (NOT) IN SELECT é bom para algumas entradas, mas não pode usar índices (Seq Scan ).

Antes de ter EXCEPT... foi assim que foi feito usando um 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 apareceu no Postgres há muito, muito tempo atrás... Mas, por exemplo, usando o MySQL eu acredito que esta ainda é a única maneira de conseguir isso usando junções de índice.