sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:NOT IN versus EXCEPT diferencia de rendimiento (editado n.º 2)

La consulta #1 no es la forma elegante de hacer esto... (NO) IN SELECT está bien para algunas entradas, pero no puede usar índices (Seq Scan ).

Antes de tener EXCEPTO... así se hacía 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 apareció en Postgres hace mucho, mucho tiempo... Pero, por ejemplo, usando MySQL, creo que esta sigue siendo la única forma de lograr esto usando uniones de índice.