Dans Oracle, en supposant (USER, HOBBY)
est unique, vous pouvez utiliser un GROUP BY
requête :
SELECT user
FROM user_hobby
WHERE hobby IN ('piano', 'sport')
GROUP BY user
HAVING COUNT(*) = 2
Cela obligera Oracle à effectuer au plus une seule passe sur les données alors que l'INTERSECT traiterait chaque requête séparément et nécessiterait donc deux passes.