Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/02/2012, 19:02
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: 17 años, 2 meses
Puntos: 2658
Respuesta: Que query es el más correcto y rápido ?

En los escenarios, matanga, tienes que considerar el DBMS que estás usando, cosa que nuestro estimado marco64yes se ha olvidado mencionar.
El esquema de optimización que yo propongo es para MySQL. En ese sentido el INNER JOIN es más eficiente que usar la coma, a pesar de ser semánticamente distintas, porque el matching ocurre en la lectura de las tablas, mientras que en el caso de las comas con la condición en el WHERE ocurre luego de leídas ambas tablas.
Además, usar la coma aumenta la cantidad de bloque de datos leídos, mientras que el INNER JOIN sólo lee completa la primera tabla y descarta aquellos donde no hay coincidencias en la segunda. Por eso la sintaxis es importante.
El parser de MySQL usará diferentes algoritmos de acuerdo a lo que encuentre, pero desde el punto de vista del análisis previo, siempre será el INNER JOIN el que genere la mejor condición, dependiendo de algunos otros factores.
Ahora bien, si hablamos de Oracle o SQL Server, especialmente del segundo, el plan más eficiente será aquel que genere la menor cantidad de accesos a disco, pero para determinarlo habría que conocer la cardinalidad de los índices, el tipo de indices usados, etc. Y la forma en que cada uno implementa el JOIN hace que la sintaxis también pese a la hora de resolver el plan de consulta...
No te olvides que siempre puedes hacer que cambiando algún parámetro, el plan de consulta cambie. No todo lo decide el optimizador. Tu puedes conducirlo hacia otro resultado...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)