Comparativa de consultas

27/01/2009 - 09:50 por José Antonio Muñoz | Informe spam
Hola al grupo,

¿Me podría decir que tipo de consulta es más eficiente y los pros y contras
de cada una de ellas? (A mi entender ambas consultas hacen lo mismo)

Tipo A:

SELECT
Campo1,
Campo2,
(SELECT Campo3 FROM Tabla2 WHERE Tabla1.Cod=Tabla2.Codigo) As Campo3,
Campo4
FROM Tabla1
ORDER BY Codigo

Tipo B:

SELECT
Campo1,
Campo2,
Tabla2.Campo3,
Campo4
FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Cod=Tabla2.Codigo
ORDER BY Codigo

NOTA: Siempre habrá una equivalencia de códigos entre tabla1 y tabla2 y por
supuesto no se repetirán los códigos de tabla2 para cada código de tabla1.

Saludos,
José Antonio Muñoz

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
27/01/2009 - 10:04 | Informe spam
La primera consulta obligas al motor a realizar una consulta a Tabla2 por
cada uno de los registros de Tabla1, por lo que es menos eficiente que la
segunda, la cual permite al motor combinar dos conjuntos de datos.

Además, si dices que siempre habrá una equivalencia entre códigos de ambas
tablas, en vez de un LEFT JOIN yo usaría INNER JOIN

En cualquier caso, lo que te sacará de dudas es el plan de ejecución de
ambas consultas


Un saludo
-
www.navento.com
Servicios de Localización GPS


"José Antonio Muñoz" wrote:

Hola al grupo,

¿Me podría decir que tipo de consulta es más eficiente y los pros y contras
de cada una de ellas? (A mi entender ambas consultas hacen lo mismo)

Tipo A:

SELECT
Campo1,
Campo2,
(SELECT Campo3 FROM Tabla2 WHERE Tabla1.Cod=Tabla2.Codigo) As Campo3,
Campo4
FROM Tabla1
ORDER BY Codigo

Tipo B:

SELECT
Campo1,
Campo2,
Tabla2.Campo3,
Campo4
FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Cod=Tabla2.Codigo
ORDER BY Codigo

NOTA: Siempre habrá una equivalencia de códigos entre tabla1 y tabla2 y por
supuesto no se repetirán los códigos de tabla2 para cada código de tabla1.

Saludos,
José Antonio Muñoz


Respuesta Responder a este mensaje
#2 José Antonio Muñoz
27/01/2009 - 11:06 | Informe spam
Gracias Carlos, ahora lo tengo claro,

Saludos,
José Antonio Muñoz.

"Carlos Sacristan" escribió en
el mensaje de noticias
news:

La primera consulta obligas al motor a realizar una consulta a Tabla2 por
cada uno de los registros de Tabla1, por lo que es menos eficiente que la
segunda, la cual permite al motor combinar dos conjuntos de datos.

Además, si dices que siempre habrá una equivalencia entre códigos de ambas
tablas, en vez de un LEFT JOIN yo usaría INNER JOIN

En cualquier caso, lo que te sacará de dudas es el plan de ejecución de
ambas consultas


Un saludo
-
www.navento.com
Servicios de Localización GPS


"José Antonio Muñoz" wrote:

Hola al grupo,

¿Me podría decir que tipo de consulta es más eficiente y los pros y
contras
de cada una de ellas? (A mi entender ambas consultas hacen lo mismo)

Tipo A:

SELECT
Campo1,
Campo2,
(SELECT Campo3 FROM Tabla2 WHERE Tabla1.Cod=Tabla2.Codigo) As Campo3,
Campo4
FROM Tabla1
ORDER BY Codigo

Tipo B:

SELECT
Campo1,
Campo2,
Tabla2.Campo3,
Campo4
FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Cod=Tabla2.Codigo
ORDER BY Codigo

NOTA: Siempre habrá una equivalencia de códigos entre tabla1 y tabla2 y
por
supuesto no se repetirán los códigos de tabla2 para cada código de
tabla1.

Saludos,
José Antonio Muñoz


Respuesta Responder a este mensaje
#3 Gustavo Larriera (MVP)
27/01/2009 - 13:40 | Informe spam
La mejor forma de saberlo es que usted analice el plan de ejecución de cada
consulta. Puede leer acerca del tema en:

SQL Server Query Execution Plan Analysi
http://www.sql-server-performance.c...is_p1.aspx


Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"José Antonio Muñoz" wrote:

Hola al grupo,

¿Me podría decir que tipo de consulta es más eficiente y los pros y contras
de cada una de ellas? (A mi entender ambas consultas hacen lo mismo)

Tipo A:

SELECT
Campo1,
Campo2,
(SELECT Campo3 FROM Tabla2 WHERE Tabla1.Cod=Tabla2.Codigo) As Campo3,
Campo4
FROM Tabla1
ORDER BY Codigo

Tipo B:

SELECT
Campo1,
Campo2,
Tabla2.Campo3,
Campo4
FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Cod=Tabla2.Codigo
ORDER BY Codigo

NOTA: Siempre habrá una equivalencia de códigos entre tabla1 y tabla2 y por
supuesto no se repetirán los códigos de tabla2 para cada código de tabla1.

Saludos,
José Antonio Muñoz


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida