In Oracle, assumendo (USER, HOBBY)
è unico, puoi usare un GROUP BY
domanda:
SELECT user
FROM user_hobby
WHERE hobby IN ('piano', 'sport')
GROUP BY user
HAVING COUNT(*) = 2
Ciò consentirà a Oracle di eseguire al massimo un singolo passaggio sui dati, mentre INTERSECT tratterebbe ogni query separatamente e quindi richiederebbe due passaggi.