Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/11/2013, 09:49
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: recomendación sobre on en INNER JOIN

Cita:
Leyendo la documentación de mysql vi que dice que las condiciones en el ON deberían hacerse en la cláusula WHERE, quedando el ON vacío.
El WHERE no es optimizable por el parser. Como se ejecuta luego de realizar el JOIN, entonces lee todos los registros antes de aplicar la condición. En cambio poner la condición con el ON permite aplicar los índices de la FK u otros existentes, y no se leen todos los registros.
Cita:
Entonces ¿Por qué habilitan el ON si no aconsejan su uso?
Por la misma razón que un CHECK no genera errores de sintaxis de un ALTER TABLE: Compatibilidad entre motores de tablas y con el ANSI SQL. Pero eso no implica que sea la mejor manera.
Por experiencia: Usa INNER JOIN con ON y no pongas las condiciones del JOIN en el WHERE. Jamás.

Y no le des bolilla a las cosas escritas en los manuales hace ocho años. Muchas de ellas están basadas en datos referidos a versiones todavía más antiguas del MySQL (u otros DBMS).
Son lo que se llamaría "herencias obsoletas".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)