Rapidez en una consulta

13/08/2008 - 17:41 por MhBeyle | Informe spam
¿Cuál es la forma más rápida de ejecutar esta consulta?

Tabla 1 --
-COD1
-COD2
-COD3
-COD4
-COD5
-DESC

Tabla 2 --
-COD
-Nombre
-Apellidos

La consulta enlaza todos los códigos [COD] de [Tabla 1] con el campo
[COD] de [Tabla 2]. Se muestran todas las filas de [Tabla 1],
coincidan o no con [Tabla 2] y se muestran los [Apellidos] y [Nombre]
de [Tabla 2], si es que hay coincidencia. Cada código es una cosa
distinta, aunque todos los nombres residan en una sola tabla ([Tabla
2]).

1 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
2 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
3 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
... ...

¿Es más rápido enlazar cada código con un alias de [Tabla 2] completo
o mejor hacer un alias de SELECT para cada enlace o alguna sugerencia?

SELECT
COD1.Apellidos AS COD1,
COD2.Apellidos AS COD2,
...
FROM
(SELECT Apellidos, COD FROM [Tabla 2]) COD2
RIGHT OUTER JOIN
[Tabla 1] ON COD2.COD = [Tabla 1].COD1
LEFT OUTER JOIN
(SELECT Apellidos, COD FROM [Tabla 2]) COD1
LEFT OUTER JOIN
...

MhBeyle ___

Preguntas similare

Leer las respuestas

#1 Maxi Accotto
06/09/2008 - 16:22 | Informe spam
Hola, si entendi bien, no le veo sentido al segundo query, el primero es mas
simple mas rapido y mas legible.
A la larga es un simple join entre tablas


"MhBeyle" escribió en el mensaje de
noticias:
¿Cuál es la forma más rápida de ejecutar esta consulta?

Tabla 1 --
-COD1
-COD2
-COD3
-COD4
-COD5
-DESC

Tabla 2 --
-COD
-Nombre
-Apellidos

La consulta enlaza todos los códigos [COD] de [Tabla 1] con el campo
[COD] de [Tabla 2]. Se muestran todas las filas de [Tabla 1],
coincidan o no con [Tabla 2] y se muestran los [Apellidos] y [Nombre]
de [Tabla 2], si es que hay coincidencia. Cada código es una cosa
distinta, aunque todos los nombres residan en una sola tabla ([Tabla
2]).

1 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
2 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
3 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
... ...

¿Es más rápido enlazar cada código con un alias de [Tabla 2] completo
o mejor hacer un alias de SELECT para cada enlace o alguna sugerencia?

SELECT
COD1.Apellidos AS COD1,
COD2.Apellidos AS COD2,
...
FROM
(SELECT Apellidos, COD FROM [Tabla 2]) COD2
RIGHT OUTER JOIN
[Tabla 1] ON COD2.COD = [Tabla 1].COD1
LEFT OUTER JOIN
(SELECT Apellidos, COD FROM [Tabla 2]) COD1
LEFT OUTER JOIN
...

MhBeyle ___
Respuesta Responder a este mensaje
#2 MhBeyle
18/09/2008 - 11:02 | Informe spam
UUf!! Ha pasado tanto tiempo que ya ni me acordaba para qué pregunté
esto.

No se me ha entendido bien. Me refería a que si era más rápido enlazar
la [Tabla 1] a la [Tabla 2] de forma completa (SELECT *) o haciendo
una subQuery por cada una de las consultas y enlazarlas al alias de
esa subQuery.
Es decir, si obtengo algo más de rendimiento filtrando el origen de
los enlaces o da lo mismo.

Lo digo porque la consulta devuelve un número de registro muy alto y
un ahorro de milésima en cada devolución de registro ahorraría
bastante al final de la consulta.

Probando las dos cosas, resulta algo más rápida la segunda opción,
aunque la primera sea más limpia. Pero yo lo que buscaba era alguna
sugerencia alternativa.

Gracias por todo,

MhBeyle __

"Maxi Accotto" escribió lo siguiente
...

Hola, si entendi bien, no le veo sentido al segundo query, el primero es mas
simple mas rapido y mas legible.
A la larga es un simple join entre tablas


"MhBeyle" escribió en el mensaje de
noticias:
¿Cuál es la forma más rápida de ejecutar esta consulta?

Tabla 1 --
-COD1
-COD2
-COD3
-COD4
-COD5
-DESC

Tabla 2 --
-COD
-Nombre
-Apellidos

La consulta enlaza todos los códigos [COD] de [Tabla 1] con el campo
[COD] de [Tabla 2]. Se muestran todas las filas de [Tabla 1],
coincidan o no con [Tabla 2] y se muestran los [Apellidos] y [Nombre]
de [Tabla 2], si es que hay coincidencia. Cada código es una cosa
distinta, aunque todos los nombres residan en una sola tabla ([Tabla
2]).

1 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
2 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
3 COD1+Apellidos COD2+Apellidos COD3+Apellidos ... DESC
... ...

¿Es más rápido enlazar cada código con un alias de [Tabla 2] completo
o mejor hacer un alias de SELECT para cada enlace o alguna sugerencia?

SELECT
COD1.Apellidos AS COD1,
COD2.Apellidos AS COD2,
...
FROM
(SELECT Apellidos, COD FROM [Tabla 2]) COD2
RIGHT OUTER JOIN
[Tabla 1] ON COD2.COD = [Tabla 1].COD1
LEFT OUTER JOIN
(SELECT Apellidos, COD FROM [Tabla 2]) COD1
LEFT OUTER JOIN
...

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