sql >> Base de Datos >  >> RDS >> Oracle

Filtro de consulta Oracle SQL en JOIN ON vs WHERE

No debería haber diferencia. El optimizador debe generar el mismo plan en ambos casos y debe poder aplicar el predicado antes, después o durante la unión en cualquier caso según cuál sea el enfoque más eficiente para esa consulta en particular.

Por supuesto, el hecho de que el optimizador pueda hacer algo, en general, no es garantía de que el optimizador lo hará realmente hacer algo en una consulta en particular. A medida que las consultas se vuelven más complicadas, se vuelve imposible considerar exhaustivamente todos los planes de consulta posibles, lo que significa que incluso con información y código perfectos, es posible que el optimizador no tenga tiempo para hacer todo lo que le gustaría que hiciera. Debería echar un vistazo a los planes reales generados para las dos consultas para ver si son realmente idénticos.