Ayuda URGENTE !! .Optimizar consulta SELECT

02/09/2004 - 15:04 por Jesús | Informe spam
HOla a todos !!

Necesito ayuda por favor

Me gustaría que alguien me respondiera razonando la misma
a poder ser , la siguiente cuestión :
Que consulta de estas 2 se ejecuta con mayor rapidez ?

SELECT IdAlbaran FROM Albaranes WHERE IdAlbaran IN (SELECT
IdAlbaran FROM AlbaranesFacturados WHERE Cliente00)

o esta otra

SELECT Albaranes.IdAlbaran FROM Albaranes INNER JOIN
AlbaranesFacturados ON Albaranes.IdAlbaran =
AlbaranesFacturados.IdAlbaran
WHERE AlbaranesFacturados.Cliente 00

Necesito saberlo ya que en función de que sea una u
otra , me toca en mi empresa cambiar unas 100 select xDDD
Muchas gracias !!

Preguntas similare

Leer las respuestas

#1 Cesar Toledo
02/09/2004 - 15:10 | Informe spam
Esa pregunta te la puedes responder tu solo,
si activas el plan de ejecucion en el analizador de consultas

y comparas los resultados.


"Jesús" escribió en el mensaje
news:4c1f01c490ed$721d7ac0$
HOla a todos !!

Necesito ayuda por favor

Me gustaría que alguien me respondiera razonando la misma
a poder ser , la siguiente cuestión :
Que consulta de estas 2 se ejecuta con mayor rapidez ?

SELECT IdAlbaran FROM Albaranes WHERE IdAlbaran IN (SELECT
IdAlbaran FROM AlbaranesFacturados WHERE Cliente00)

o esta otra

SELECT Albaranes.IdAlbaran FROM Albaranes INNER JOIN
AlbaranesFacturados ON Albaranes.IdAlbaran AlbaranesFacturados.IdAlbaran
WHERE AlbaranesFacturados.Cliente 00

Necesito saberlo ya que en función de que sea una u
otra , me toca en mi empresa cambiar unas 100 select xDDD
Muchas gracias !!
Respuesta Responder a este mensaje
#2 Maxi
02/09/2004 - 15:15 | Informe spam
Hola, depende, en teoria la segunda deberia ser mas eficiente, pero solo en
teoria, particularmente yo uso la segunda por una cuestion de formacion,
pero no deberias tener muchas diferencias entre una y otra

Suerte


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Jesús" escribió en el mensaje
news:4c1f01c490ed$721d7ac0$
HOla a todos !!

Necesito ayuda por favor

Me gustaría que alguien me respondiera razonando la misma
a poder ser , la siguiente cuestión :
Que consulta de estas 2 se ejecuta con mayor rapidez ?

SELECT IdAlbaran FROM Albaranes WHERE IdAlbaran IN (SELECT
IdAlbaran FROM AlbaranesFacturados WHERE Cliente00)

o esta otra

SELECT Albaranes.IdAlbaran FROM Albaranes INNER JOIN
AlbaranesFacturados ON Albaranes.IdAlbaran AlbaranesFacturados.IdAlbaran
WHERE AlbaranesFacturados.Cliente 00

Necesito saberlo ya que en función de que sea una u
otra , me toca en mi empresa cambiar unas 100 select xDDD
Muchas gracias !!




Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.748 / Virus Database: 500 - Release Date: 01/09/2004
Respuesta Responder a este mensaje
#3 Anonimo
02/09/2004 - 16:25 | Informe spam
Hola, depende, en teoria la segunda deberia ser mas


eficiente, pero solo en
teoria, particularmente yo uso la segunda por una


cuestion de formacion,
pero no deberias tener muchas diferencias entre una y otra

Suerte



Coincido contigo en que es mejor por formación la
2a ,pero estoy hablando de eficiencia real , para tablas
con 2 o 3 millones de registros.
Gracias de tods formas Maxi .

Salu2
-


-
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
-


-
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Jesús" escribió en


el mensaje
news:4c1f01c490ed$721d7ac0$
HOla a todos !!

Necesito ayuda por favor

Me gustaría que alguien me respondiera razonando la misma
a poder ser , la siguiente cuestión :
Que consulta de estas 2 se ejecuta con mayor rapidez ?

SELECT IdAlbaran FROM Albaranes WHERE IdAlbaran IN (SELECT
IdAlbaran FROM AlbaranesFacturados WHERE Cliente00)

o esta otra

SELECT Albaranes.IdAlbaran FROM Albaranes INNER JOIN
AlbaranesFacturados ON Albaranes.IdAlbaran >AlbaranesFacturados.IdAlbaran
WHERE AlbaranesFacturados.Cliente 00

Necesito saberlo ya que en función de que sea una u
otra , me toca en mi empresa cambiar unas 100 select xDDD
Muchas gracias !!




Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.748 / Virus Database: 500 - Release Date:


01/09/2004


.

Respuesta Responder a este mensaje
#4 Maxi
02/09/2004 - 18:13 | Informe spam
Te repito, no deberia haber diferencias considerables, pero lo ideal es usar
la opcion 2


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



escribió en el mensaje
news:0b6001c490f8$a1820b40$

Hola, depende, en teoria la segunda deberia ser mas


eficiente, pero solo en
teoria, particularmente yo uso la segunda por una


cuestion de formacion,
pero no deberias tener muchas diferencias entre una y otra

Suerte



Coincido contigo en que es mejor por formación la
2a ,pero estoy hablando de eficiencia real , para tablas
con 2 o 3 millones de registros.
Gracias de tods formas Maxi .

Salu2
-


-
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
-


-
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Jesús" escribió en


el mensaje
news:4c1f01c490ed$721d7ac0$
HOla a todos !!

Necesito ayuda por favor

Me gustaría que alguien me respondiera razonando la misma
a poder ser , la siguiente cuestión :
Que consulta de estas 2 se ejecuta con mayor rapidez ?

SELECT IdAlbaran FROM Albaranes WHERE IdAlbaran IN (SELECT
IdAlbaran FROM AlbaranesFacturados WHERE Cliente00)

o esta otra

SELECT Albaranes.IdAlbaran FROM Albaranes INNER JOIN
AlbaranesFacturados ON Albaranes.IdAlbaran >AlbaranesFacturados.IdAlbaran
WHERE AlbaranesFacturados.Cliente 00

Necesito saberlo ya que en función de que sea una u
otra , me toca en mi empresa cambiar unas 100 select xDDD
Muchas gracias !!




Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.748 / Virus Database: 500 - Release Date:


01/09/2004


.






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.748 / Virus Database: 500 - Release Date: 01/09/2004
Respuesta Responder a este mensaje
#5 Lázaro
02/09/2004 - 19:53 | Informe spam
Te digo la respuesta:

El optimizador analiza primero la subselect interna y como es conocida, es
decir la ejecuta de una sola vez, ya que no depende de la externa, entonces
modifica la sentencia a un join como el que has escrito.

Solamente son peores aquellos subselect que depende de un dato exterior.
Sobre la consulta del join solamente sería peor si el sistema no encontrara
indices para hacer el join entre ambas tablas

De todas maneras como bien te han contestado, por estandar la del join, y de
todas maneras mirate el showplan ya verás la información que te da.

Salu2


"Jesús" wrote in message
news:4c1f01c490ed$721d7ac0$
HOla a todos !!

Necesito ayuda por favor

Me gustaría que alguien me respondiera razonando la misma
a poder ser , la siguiente cuestión :
Que consulta de estas 2 se ejecuta con mayor rapidez ?

SELECT IdAlbaran FROM Albaranes WHERE IdAlbaran IN (SELECT
IdAlbaran FROM AlbaranesFacturados WHERE Cliente00)

o esta otra

SELECT Albaranes.IdAlbaran FROM Albaranes INNER JOIN
AlbaranesFacturados ON Albaranes.IdAlbaran AlbaranesFacturados.IdAlbaran
WHERE AlbaranesFacturados.Cliente 00

Necesito saberlo ya que en función de que sea una u
otra , me toca en mi empresa cambiar unas 100 select xDDD
Muchas gracias !!
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida