Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/04/2014, 11:34
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Preguntas sobre diferencias entre consultas

Performance y uso de índices, por lo pronto.
El INNER JOIN filtra mientras lee, en especial cuando la relación del ON corresponde a relaciones de FK->PK, ya que aprovecha los ídnices de FK para hacerlo.
El WHERE aplica luego de leer las tablas del FROM, por lo que primero levanta la info y luego filtra. Usar el JOIN implícito, con filtro en WHERE, por otra parte, es proclie a crear productos cartesianos, que es el peor tipo de consulta posible.
Por otra parte, el WHERE aplica el filtro por cada registro devuelto en el FROM, por lo que el IN() no se aplica globalmente, sino que puede repetir la ejecución por cada resultado.
Básicamente la idea es que el WHERE no es optimizable por el parser de MySQL, mientras que el FROM si.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)