¿Vale la pena crear una variable tabla en este caso?

24/05/2007 - 12:03 por Victor | Informe spam
Hola a tod@s.

Tengo una consulta, que no es que sea muy pesada, pero la tengo utilizo 4
veces en un select union all, donde lo que cambian son los parámetros del
where:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe <> 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe <> 0

Había pensado guardar los datos del select1 (sin tener en cuenta las
condiciones) en una variable tabla, y sobre ésta realizar las uniones:

select 1 from @tabla1
where salida = @ida and ofe = 0
union all
select 1 from @tabla1
where salida = @llegada and ofe = 0
union all
select 1 from @tabla1
where salida = @ida and ofe <> 0
union all
select 1 from @tabla1
where salida = @llegada and ofe <> 0

¿Vale la pena?

Muchas gracias.
 

Leer las respuestas

#1 Alejandro Mesa
24/05/2007 - 15:08 | Informe spam
Victor,

Trata:

select 1
from tabla1 inner join tabal2 on a = b
where salida in (@ida, @llegada)
go

No veo porque usar la column [ofe], ya que primero usas [ofe] = 0 y luego la
misma sentencia con [ofe] != 0.


select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe <> 0



Esto equivale a:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida


AMB

"Victor" wrote:

Hola a

Tengo una consulta, que no es que sea muy pesada, pero la tengo utilizo 4
veces en un select union all, donde lo que cambian son los parámetros del
where:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe <> 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe <> 0

Había pensado guardar los datos del select1 (sin tener en cuenta las
condiciones) en una variable tabla, y sobre ésta realizar las uniones:

select 1 from @tabla1
where salida = @ida and ofe = 0
union all
select 1 from @tabla1
where salida = @llegada and ofe = 0
union all
select 1 from @tabla1
where salida = @ida and ofe <> 0
union all
select 1 from @tabla1
where salida = @llegada and ofe <> 0

¿Vale la pena?

Muchas gracias.



Preguntas similares