PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :différence de performances NOT IN versus EXCEPT (édité #2)

La requête #1 n'est pas la manière élégante de le faire... (NOT) IN SELECT convient pour quelques entrées, mais elle ne peut pas utiliser d'index (Seq Scan ).

Avant d'avoir EXCEPT... c'est comme ça que ça se faisait en utilisant 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 est apparu dans Postgres il y a très, très longtemps... Mais par exemple, en utilisant MySQL, je pense que c'est toujours le seul moyen d'y parvenir en utilisant des jonctions d'index.