Select Top 1 Vs. If Exists( Select...)

18/11/2004 - 22:56 por Luis Cejas | Informe spam
Estoy queriendo saber cúal es la forma mas rápida o menos tediosa para el
Server
Tengo un par de Procedimientos y en alguno de ellos tengo distintas
"soluciones" para llegar a lo mismo.

1.- Select Top 1 From
If @@RowCount <> 0 .

2.- If Exists( Select 1 From .)

3.- If Exists( Select Top 1 1 From .)


Luis

Preguntas similare

Leer las respuestas

#1 Maxi
18/11/2004 - 23:08 | Informe spam
Luis, en mi experiencia no hay mucha diferencia entre metodos. Yo uso mas el
IF EXISTs pero todo depende :)

"Luis Cejas" escribió en el mensaje
news:%
Estoy queriendo saber cúal es la forma mas rápida o menos tediosa para el
Server
Tengo un par de Procedimientos y en alguno de ellos tengo distintas
"soluciones" para llegar a lo mismo.

1.- Select Top 1 From
If @@RowCount <> 0 .

2.- If Exists( Select 1 From .)

3.- If Exists( Select Top 1 1 From .)


Luis


Respuesta Responder a este mensaje
#2 Paulino Padial
19/11/2004 - 00:38 | Informe spam
En estos casos te aconsejo utilizar en plan de ejecucion y el comando
set statistics io on š(mas adelante lo hago)
, para aplicarlo en tu consulta,
por ejemplo el 2 es menos eficiente que el 3 si la consulta puede
devolver 100 filas por ejemplo, porque en el 2 el sql procesa
internamente la consulta, y procesatodas las filas en memoria, para
preguntar si ha devuelto algo. Un tanto rebuscado. En cambio la 3 es mas
acertada porque solo coje y devuelve al cliente 1 fila, por lo tanto la
carga de red es menor. Eso desde el punto de vista de como lo precesa la
consulta sql server, pero mira este ejemplo que curioso ;)

Bueno y ahora la prueba mia por ejemplo, mira

ejecutas esto en Pubs

set statistics io on

if exists( select top 1 * from authors )
select 'hola'

select top 1 * from authors
if @@rowcount <> 0
select 'hola'

el if exists devuelve solo hola mientras que la segunda con el
@@rowcount, devuelve el resultado de la select, y además hola.
comprendes? yo la veo mejor para sentencia de comprobacion rapida, que
nodevuelven datos, como un update o un delete que no devuelven conjuntos
de registros

update table set campo = nuevovalor
if @@rowcount <> 0

mas que para un select...


Luis Cejas wrote:
Estoy queriendo saber cúal es la forma mas rápida o menos tediosa para el
Server
Tengo un par de Procedimientos y en alguno de ellos tengo distintas
"soluciones" para llegar a lo mismo.

1.- Select Top 1 From
If @@RowCount <> 0 .

2.- If Exists( Select 1 From .)

3.- If Exists( Select Top 1 1 From .)


Luis


Respuesta Responder a este mensaje
#3 ulises
19/11/2004 - 01:37 | Informe spam
Es más eficiente usar EXISTS ya que la consulta que utiliza no retorna
valores solo la indicación de verdadero o falso, con ese considerando
las consultas 2 y 3 son similares si ves los planes de ejecución de
ambos verá que son identicos.

Saludos,
Ulises

On Thu, 18 Nov 2004 18:56:48 -0300, "Luis Cejas"
wrote:

Estoy queriendo saber cúal es la forma mas rápida o menos tediosa para el
Server
Tengo un par de Procedimientos y en alguno de ellos tengo distintas
"soluciones" para llegar a lo mismo.

1.- Select Top 1 From
If @@RowCount <> 0 .

2.- If Exists( Select 1 From .)

3.- If Exists( Select Top 1 1 From .)


Luis

Respuesta Responder a este mensaje
#4 Luis Cejas
19/11/2004 - 15:57 | Informe spam
Muchas Gracias a todos por sus respuestas

Luis


"ulises" escribió en el mensaje
news:
Es más eficiente usar EXISTS ya que la consulta que utiliza no retorna
valores solo la indicación de verdadero o falso, con ese considerando
las consultas 2 y 3 son similares si ves los planes de ejecución de
ambos verá que son identicos.

Saludos,
Ulises

On Thu, 18 Nov 2004 18:56:48 -0300, "Luis Cejas"
wrote:

>Estoy queriendo saber cúal es la forma mas rápida o menos tediosa para el
>Server
>Tengo un par de Procedimientos y en alguno de ellos tengo distintas
>"soluciones" para llegar a lo mismo.
>
>1.- Select Top 1 From
> If @@RowCount <> 0 .
>
>2.- If Exists( Select 1 From .)
>
>3.- If Exists( Select Top 1 1 From .)
>
>
>Luis
>

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