Duda Sentencia SQL

Sembei
02 de Junio del 2006
Hola a tod@s.

Tengo una duda respecto a la manera de actuar del sql.
Estoy trabajando con varias tablas a la vez.
¿Da igual escribir todas las tablas en el FROM que utilizar JOIN's?.
Internamente he comprobado que cuando escribo todas las tablas en el FROM el compilador me reinterpreta (parsea) la sentencia y me la convierte a JOIN's.

Yo tenía entendido que cuando utilizabas FROM primero te trae todos los datos de todas las tablas y luego filtra según lo indicado en el WHERE. Cuando utilizas JOIN no te trae todos los datos de todas las tablas, filtra primero en función de las claves y luego vuelve a filtrar otra vez según lo indicado en el WHERE.

¿El rendimiento es el mismo?.

Un saludo.

Ejm:

select ... from t1, t2, t3, t4, t5 where t1.1=t2.1 and t2.2=t3.2 ....
select ... from t1 inner join t2 ... inner join t3 ... inner join t4 ... inner join t5 ... where ...

santiago
02 de Junio del 2006
yo tenia esa duda tambien, pero creo que poner las tablas en el from solo te simula un join, en caso de querer hacer un right join, o un left join no te va a dar los mismos resultados

Abed Nego
02 de Junio del 2006
Cuando pones varias tablas en el from, te muestra todas las combinaciones posibles de todas las filas de las tablas introducidad. Así por ejemplo, si se ponen dos tablas de 10 filas en el from, aparecerá una búsqueda con 100 filas. O lo que es lo mismo, 10^2.
Lo que ocurre es que SQL Server introduce automaticamente los joins debido a las reglas de clave ajena que ya se han introducido en el modo diseño. No hay diferencia de rendimiento, puesto que con join o sin join, siempre hace lo mismo: Combina todas las filas de todas las columnas, y luego comprueba si las claves ajenas y primarias de las tablas coinciden. Si se ponen varias tablas en el From y no se ponen condiciones en el Where, aparecerán tantas filas como el resultado de multiplicar todas las filas de cada tabla que se introduce en el From.