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

Help Me con un Select

Estas en el tema de Help Me con un Select en el foro de SQL Server en Foros del Web. Hola Amigos, Me podrian ayudar ya que estoy haciendo una consulta, pero tarda demasiado o se va por tiempo, la que estoy haciendo es la ...
  #1 (permalink)  
Antiguo 10/10/2006, 10:49
 
Fecha de Ingreso: septiembre-2006
Mensajes: 16
Antigüedad: 17 años, 7 meses
Puntos: 0
Help Me con un Select


Hola Amigos,

Me podrian ayudar ya que estoy haciendo una consulta, pero tarda demasiado o se va por tiempo, la que estoy haciendo es la siguiente, segun yo mi problema es por las fechas, pero no entiendo:

SELECT cat_records_agencies.file_name_batch
FROM filter_par_process
INNER JOIN cat_records_agencies
ON filter_par_process.folio = cat_records_agencies.folio
where (CONVERT(datetime, filter_par_process.reg_date_submit_file, 101) >= convert(datetime, @date_start,101)
and CONVERT(datetime, filter_par_process.reg_date_submit_file, 101) <= convert(datetime, @date_end ,101))
and riGht(cat_records_agencies.file_name_batch, 3) = 'txt'
GROUP BY cat_records_agencies.file_name_batch
order by cat_records_agencies.file_name_batch
  #2 (permalink)  
Antiguo 10/10/2006, 17:08
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
No es una sentencia retorcida, se ve bastante normal. Lo único que te recomendaría probar es usar BETWEEN dentro del WHERE en lugar de los >= y <=, aunque probablemente el optimizador interno los convierta en lo mismo.

Fuera de eso el resultado dependerá del JOIN que haces. Puedes mejorar el rendimiento asegurandote que hay indices sobre los campos que hacer el JOIN, el GROUP BY y sobre los campos que haces el WHERE, eso hará los SELECT más rápidos.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 12/10/2006, 02:46
 
Fecha de Ingreso: octubre-2006
Mensajes: 36
Antigüedad: 17 años, 6 meses
Puntos: 0
Como primera solución te diría que en este caso uses un DISTINCT en vez de un GROUP BY, que a no ser que se me escape algo, para esta sentencia da el mismo resultado

Otra opción es reducir las funciones de los WHERE, aunque no se si podrás hacerlo. Puedes probar quitando el tercer parametro para la conversión a datetime, y usando substring, en vez de right.

Tambien puedes probar poniendo la condición del right antes que la de los datetime, ya que puede reducir el numero de registros a comprobar de la segunda tabla
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 14:47.