Consulta sobre ejecucion de Selects ......

03/06/2006 - 19:06 por jpablos | Informe spam
Saludos, cual select se ejecuta mas rapido, el que tiene un select anidado o
el que tiene inner join, me explico mejor:

DECLARE @CODIGO_EMPRESA INT,
@CODIGO_AGENCIA INT

SELECT @CODIGO_EMPRESA = 1, @CODIGO_AGENCIA = 1

-
SELECT NOMBRE AS NOMBRE_EMPRESA, DIRECCION AS DIRECCION_EMPRESA, TELEFONO AS
TELEFONO_EMPRESA,
(SELECT NOMBRE FROM GTGE_AGENCIA WHERE CODIGO_EMPRESA = @CODIGO_EMPRESA AND
CODIGO_AGENCIA = @CODIGO_AGENCIA) AS NOMBRE_AGENCIA
FROM GTGE_EMPRESA
WHERE CODIGO = @CODIGO_EMPRESA



SELECT GTGE_EMPRESA.NOMBRE AS NOMBRE_EMPRESA, GTGE_EMPRESA.DIRECCION AS
DIRECCION_EMPRESA,
GTGE_EMPRESA.TELEFONO AS TELEFONO_EMPRESA,
GTGE_AGENCIA.NOMBRE AS NOMBRE_AGENCIA
FROM GTGE_EMPRESA INNER JOIN GTGE_AGENCIA
ON GTGE_EMPRESA.CODIGO = GTGE_AGENCIA.CODIGO_EMPRESA
WHERE GTGE_EMPRESA.CODIGO = @CODIGO_EMPRESA
AND GTGE_AGENCIA.CODIGO_AGENCIA = @CODIGO_AGENCIA

-

Ademas, otra pregunta, dentro del inner join puedo poner otras condiciones,
es decir no poner en el where la parte de "GTGE_AGENCIA.CODIGO_AGENCIA =
@CODIGO_AGENCIA" sino en la parte del inner join, o sea la instruccion me
quedaria asi

SELECT GTGE_EMPRESA.NOMBRE AS NOMBRE_EMPRESA, GTGE_EMPRESA.DIRECCION AS
DIRECCION_EMPRESA,
GTGE_EMPRESA.TELEFONO AS TELEFONO_EMPRESA,
GTGE_AGENCIA.NOMBRE AS NOMBRE_AGENCIA
FROM GTGE_EMPRESA INNER JOIN GTGE_AGENCIA
ON GTGE_EMPRESA.CODIGO = GTGE_AGENCIA.CODIGO_EMPRESA AND
GTGE_AGENCIA.CODIGO_AGENCIA = @CODIGO_AGENCIA
WHERE GTGE_EMPRESA.CODIGO = @CODIGO_EMPRESA

Cual de los tres selects se ejecutaria mas rapido, o habria otra forma de
hacerlo de que se ejecuten mas rapido ????

Gracias ...
 

Leer las respuestas

#1 Alejandro Mesa
04/06/2006 - 00:39 | Informe spam
jpablos,

Pon las dos sentencias en un batch y chequea el plan estimado de ejecucion.
Yo prefiero usar el inner join.

Ademas, otra pregunta, dentro del inner join puedo poner otras condiciones,
es decir no poner en el where la parte de "GTGE_AGENCIA.CODIGO_AGENCIA =
@CODIGO_AGENCIA" sino en la parte del inner join, o sea la instruccion me
quedaria asi



De acuerdo a la sentencia, si puedes quitar el filtro de la clausula
"where"y ponerlo en el join.


AMB


"jpablos" wrote:

Saludos, cual select se ejecuta mas rapido, el que tiene un select anidado o
el que tiene inner join, me explico mejor:

DECLARE @CODIGO_EMPRESA INT,
@CODIGO_AGENCIA INT

SELECT @CODIGO_EMPRESA = 1, @CODIGO_AGENCIA = 1

-
SELECT NOMBRE AS NOMBRE_EMPRESA, DIRECCION AS DIRECCION_EMPRESA, TELEFONO AS
TELEFONO_EMPRESA,
(SELECT NOMBRE FROM GTGE_AGENCIA WHERE CODIGO_EMPRESA = @CODIGO_EMPRESA AND
CODIGO_AGENCIA = @CODIGO_AGENCIA) AS NOMBRE_AGENCIA
FROM GTGE_EMPRESA
WHERE CODIGO = @CODIGO_EMPRESA



SELECT GTGE_EMPRESA.NOMBRE AS NOMBRE_EMPRESA, GTGE_EMPRESA.DIRECCION AS
DIRECCION_EMPRESA,
GTGE_EMPRESA.TELEFONO AS TELEFONO_EMPRESA,
GTGE_AGENCIA.NOMBRE AS NOMBRE_AGENCIA
FROM GTGE_EMPRESA INNER JOIN GTGE_AGENCIA
ON GTGE_EMPRESA.CODIGO = GTGE_AGENCIA.CODIGO_EMPRESA
WHERE GTGE_EMPRESA.CODIGO = @CODIGO_EMPRESA
AND GTGE_AGENCIA.CODIGO_AGENCIA = @CODIGO_AGENCIA

-

Ademas, otra pregunta, dentro del inner join puedo poner otras condiciones,
es decir no poner en el where la parte de "GTGE_AGENCIA.CODIGO_AGENCIA =
@CODIGO_AGENCIA" sino en la parte del inner join, o sea la instruccion me
quedaria asi

SELECT GTGE_EMPRESA.NOMBRE AS NOMBRE_EMPRESA, GTGE_EMPRESA.DIRECCION AS
DIRECCION_EMPRESA,
GTGE_EMPRESA.TELEFONO AS TELEFONO_EMPRESA,
GTGE_AGENCIA.NOMBRE AS NOMBRE_AGENCIA
FROM GTGE_EMPRESA INNER JOIN GTGE_AGENCIA
ON GTGE_EMPRESA.CODIGO = GTGE_AGENCIA.CODIGO_EMPRESA AND
GTGE_AGENCIA.CODIGO_AGENCIA = @CODIGO_AGENCIA
WHERE GTGE_EMPRESA.CODIGO = @CODIGO_EMPRESA

Cual de los tres selects se ejecutaria mas rapido, o habria otra forma de
hacerlo de que se ejecuten mas rapido ????

Gracias ...

Preguntas similares