Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Cómo optimizar este query de SQL?

Estas en el tema de Cómo optimizar este query de SQL? en el foro de SQL Server en Foros del Web. Al ejecutar el siguiente query, toma mucho tiempo, el costo es alto y a veces cuelga el motor de SQL. ¿Hay alguna manera de optimizarlo?? ...
  #1 (permalink)  
Antiguo 14/07/2011, 10:50
 
Fecha de Ingreso: julio-2011
Mensajes: 1
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Cómo optimizar este query de SQL?

Al ejecutar el siguiente query, toma mucho tiempo, el costo es alto y a veces cuelga el motor de SQL. ¿Hay alguna manera de optimizarlo??

Cualquier sugerencia será tomada en cuenta, gracias.


declare @serial varchar(20),
@fecha_inicio datetime,
@fecha_fin datetime

select @serial = '%PSR0617%'
select @fecha_inicio = '2010-10-01'
select @fecha_fin = '2010-10-31'


print '--RESULTADOS PARA ' + @serial + char(10)
select * from tabla1 a (nolock), tabla2 b(nolock), tabla3 c (nolock), tabla4 d (nolock)
where a.campo1 = b.campo1 and a.fecha = b.fecha and a.campo2 = d.campo2 and b.campo3 = c.campo3
and a.fecha in (select fecha from tabla4 (nolock) where fecha between @fecha_inicio and @fecha_fin and valor like @serial)
and b.detalle in (select detalle from tabla4 (nolock) where fecha between @fecha_inicio and @fecha_fin and cat_valor like @serial)

go

select * from tabla5 a, tabla4 b (nolock)
where
a.campo1 = b.campo2
and b.fecha in (select fecha from tabla4 (nolock) where fecha between @fecha_inicio and @fecha_fin and valor like @serial)
and b.detalle in (select fecha from tabla4 (nolock) where fecha between @fecha_inicio and @fecha_fin and valor like @serial)
  #2 (permalink)  
Antiguo 14/07/2011, 10:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Cómo optimizar este query de SQL?

Primero usa los join, ya sea inner o left, segundo revisa tus indices, si no tienes crealos en tus tablas, tercero si estas usando este query varias veces select fecha from tabla4 (nolock) where fecha between @fecha_inicio and @fecha_fin and valor like @seria, porque no lo metes en una tabla temporal?? cuarto, no hagas un select * de tus tablas mejor haz un select campo, campo, campo..... esto mejora el rendimiento ya que nada mas te traes lo que necesitas, es lo que se me ocurre

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/07/2011, 11:27
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Cómo optimizar este query de SQL?

5o.- No hagas busquedas con IN ( ...... ), es mejor utilizar EXISTS
__________________
MCTS Isaias Islas

Etiquetas: query, select, sql, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:46.