hola latinpower:
La razón principal para el uso de JOIN's en lugar de WHERE son los tiempos de respuesta: aunque el resultado de las consultas es el mismo las rutinas implementadas en los JOIN'S están optimizadas, de tal suerte que en consultas con tablas muy grandes los tiempos de respuesta pueden ser bastante diferentes.
Por experiencia propia te comento que en el trabajo obtuvimos mejoras en tiempos de respuesta bastante considerables simplemente cambiando los joins. Es posible que si tus tablas no son muy grandes no veas cambios significativos en los tiempos, pero podrías hacer la prueba de cualquier manera.
Ademas en lo particular, pienso que las consultas quedan más legibles o "entendibles" utilizando JOINS ya que separas perfectamente los criterios que utilizas para unir las tablas y las condiciones normales. Te pongo dos ejemplos.
Código MySQL:
Ver originalselect T1.campo
, T2.campo
, T3.campo
, T4.campo
, Tabla5.Campo
from tabla1 T1
, Tabla2 T2
, Tabla3 T3
, Tabla4 T4
, Tabla5 T5
select T1.campo
, T2.campo
, T3.campo
, T4.campo
, Tabla5.Campo
T4.campo4
not in (1, 2, 3)
en el primer caso, al mezclar tanto las condiciones de unión como las condiciones de filtrado en el WHERE puede resultar difícil ubicar una condición en específico, aunque bueno, esto último es bastante subjetivo. Finalmente, utilizando JOINS es poco probable que ocurran Productos cartecianos entres tus tablas, es decir que olvides colocar una condición de unión en el WHERE, ya que es fácil identificar sobre que JOIN no se ha definido la cláusula ON respectiva
(Observaste que en la primer consulta la Tabla5 no se une con ninguna otra???).
Independientemente de si te inclinas por el WHERE o el JOIN, es importante que tengas una buena administración de indices en tus tablas y de ser posible siempre utilice EXPLAIN para tratar de optimizar tu consulta.
Saludos
Leo.