13/02/2012, 19:02
|
| 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) |