SQL en vs intersección

Quiero seleccionar resultados de una tabla

USER HOBBY John Sport Ann Piano Lee Reading Ann Sport Lee Piano 

Y quiero search personas que tengan más de un hobby común. Qué consulta tiene un mejor performance,

 select user from table where hobby = "sport" intersect select user from table where hobby = "piano" 

O

 select user from table where user in (select user from table where hobby = "piano") and where hobby = "sport"? 

En Oracle, suponiendo que (USER, HOBBY) sea ​​único, puede usar una consulta GROUP BY :

 SELECT user FROM user_hobby WHERE hobby IN ('piano', 'sport') GROUP BY user HAVING COUNT(*) = 2 

Esto hará que Oracle realice a lo sumo un pase único de datos, mientras que el INTERSECT tratará cada consulta por separado y, por lo tanto, necesitará dos pasadas.

El mejor performance es del usuario seleccionado de la tabla donde hobby = "sport" o hobby = "piano"

pero si esto es solo un ejemplo teórico, entonces se han realizado muchas testings, aquí algunos: http://www.execsql.com/post/intersectexcept-versus-innot-in

Por cierto, no hay una mejor solución que probar por ti mismo el time de ejecución de la consulta