Vous n'êtes pas identifié(e).
Pages : 1
Bonjour la communauté,
je voudrais savoir s'il y a une différence algorithmique majeure entre ces 2 requêtes :
select table1.* from table1 left join table2 using (id) where table2.id is null
et
select * from table1 where id not in (select id from table2)
Je demande ça car d'après moi le résultat de ces 2 requêtes devraient être identiques mais apparemment je me trompe. Je fais ce type de requête pour tester la présence d'uuid entre 2 tables et alors que la première me renvoie le résultat attendu, la deuxième renvoie 0 lignes. Quelque chose doit m'échapper ...
Hors ligne
Bonjour,
La difference vient de la gestion des NULL avec une clause IN. Votre table2 doitt contenir des enregistrements ou id est NULL.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour et merci pour la réponse.
Oui en effet mais ce n'était pas le cas chez moi. Je n'ai pas trop compris mais qu'importe, je n'ai pas beaucoup cherché plus loin puisqu'il y avait une solution. En tout cas les quelques tests que j'ai réalisés montrent qu'au niveau performance, sur de grosses table, il vaut mieux utiliser la jointure que le in avec une sous-requête.
Bonne journée.
Hors ligne
Pages : 1