La solution exists passes en revue tous les user et pour chacun fait une requête sur la table email. Une sous-requête exist est difficile à optimiser, même dans les cas particuliers.
Comme tu l'as présenté, les solutions efficaces évitent exist :
select u.id from user u join email e on e.source_id = u.id or e.target_id = u.id
# Bah
Posté par Pierre Carrier . En réponse au message performances de JOIN / EXISTS sur postgres. Évalué à 2.
La solution
existspasses en revue tous lesuseret pour chacun fait une requête sur la tableemail. Une sous-requêteexistest difficile à optimiser, même dans les cas particuliers.Comme tu l'as présenté, les solutions efficaces évitent
exist:select u.id from user u join email e on e.source_id = u.id or e.target_id = u.id