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

[SOLUCIONADO] Optimizar consultas

Estas en el tema de Optimizar consultas en el foro de SQL Server en Foros del Web. Hola: He trabajado en una formula (consulta) por una semana, se han indexado las tablas, el problema es que a la fecha esta consulta debe ...
  #1 (permalink)  
Antiguo 03/12/2014, 15:45
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Optimizar consultas

Hola:

He trabajado en una formula (consulta) por una semana, se han indexado las tablas, el problema es que a la fecha esta consulta debe tratar con mas de 400.000 registro, y me preocupa por que tarda hasta 25 minutos en generar el reporte, existe algúna manera, optimizar sean por: Sistema operativo, asiganación de memoria, funciones, vistas, SP, que mejore el tiempo de respuesta de la consulta?

No posteo la consulta por que es grande pero si lo necesitan lo haré.

Gracias por su ayuda
  #2 (permalink)  
Antiguo 03/12/2014, 15:50
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: Optimizar consultas

plan de ejecucion de tu consulta, no ocupas postear toda la consulta(la verdad eso no sirve) con el plande ejecucion es mas que suficiente(ctrl+L para ver el plan de ejecucion)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 03/12/2014, 16:14
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: Optimizar consultas

¿Cuánto memoria tiene tu servidor?, ¿Cuánta memoria tiene SQL Server asignada?, ¿Qué versión y edición de SQL Server manejas?, ¿Tienes algún plan de mantenimiento?, ¿Dónde se encuentra localizada tu TEMPDB? y habría muchas y muchas mas preguntas...
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 03/12/2014, 16:27
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Optimizar consultas

En principio no soy un DBA, es mi primer proyecto con sqlserver, pero conozco SQL.

Aclarar que el problema no lo tengo en mi equipo local, esta en un servidor donde es dificil su acceso, pero debido al problema imagino que si me daran los datos que me describe iislas, sin embaro corrí el Plan de ejecución de mi consulta en mi equipo local donde en un porcentaje alto (entre 4% y 7%) me muestra el Index Spool (eager Spool). averiguaré como tratar el plan de consultas, pero de pronto ustedes podrían darme algúas luces.

Gracias
  #5 (permalink)  
Antiguo 03/12/2014, 16:39
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: Optimizar consultas

muestra todo el plan de ejecucion para poder decirte donde estas mal, tienes algun table scan en el plan, un lockup o cosas asi???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 03/12/2014, 16:57
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Optimizar consultas

Pues el plan es demasiado grande para mostrarlo incluso como imágen, tal ves puedo enviar el sqlplan. Si tengo table scan aun que no he visto lockup: mejor describo lo que hay:
Table Scan, Parallelism, Computer Scalar, Has Match Bitmap, Merge Join, Streamer Aggregate, Sort, Concatenation, Nested Loops, Computer Scalar, Filter, Index Spool, Contact Scan, Index Scan [No clustered].
  #7 (permalink)  
Antiguo 03/12/2014, 17:03
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: Optimizar consultas

table scan malo
index scan malo

esos 2 te pueden quitar muchisimo rendimiento de tu query, si puedes mandar el sqlplan tambien puede ayudar.

Table scan quiere decir que esta leyendo toda una tabla sin indices, index scan es lo mismo que table scan, los indices no estan bien por lo que lee toda la tabla para regresar el resultado
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 04/12/2014, 08:38
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Optimizar consultas

Muchas gracias por tu respuesta, aqui el link donde dejo el sqlplan (esta en dropbox), e intentare verificar tus observaciones.

Muchas gracias
  #9 (permalink)  
Antiguo 04/12/2014, 08:58
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: Optimizar consultas

varias de tus tablas no tienen indices, y otra cosa si revisas bien estas repitiendo muchisimo codigo que puedes poner en variables veo que tienes

Código SQL:
Ver original
  1. SELECT COUNT(DATEDIFF(DAY,aws.Fecha_SPP,'2014-06-30')

y eso lo puedes poner en una variable y nada se calcula una vez ese valor y despues lo usas todas las demas veces pero sin volver a calcularlo, aqui en tu query cada vez que mandas llamar ese query lo calcula y tienes como 20 llamadas a eso.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 04/12/2014, 10:38
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: Optimizar consultas

Estoy trabajando con SQL Server desde la versión 6.0 (que no salió al mercado) y nunca, pero nunca, había visto un query de este tipo, tiene todos los errores habidos y por haber.
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 04/12/2014, 10:49
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: Optimizar consultas

jajajaja llamadas sobre llamadas, todo sobre una misma tabla, la tabla principal no tiene indices jajajajaja, todo un caso ese query y el plan de ejecucion
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 04/12/2014, 11:47
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Optimizar consultas

Acepto sus criticas, y si esta mal las consultas sobre consultas, pero en en una situación donde básicamente es necesario mostrar un reporte con diferentes condiciones que llegan de apoco ese fue el resultado, por lo que veo no es necesario arreglar la consulta si no hacer otra.

Entonces, considerando que son tres pinches tablas de las que debo sacar todos los datos considerando un mes, me ayudaría mucho me colaboren como pudiera optimizar dicha cosoulta
  #13 (permalink)  
Antiguo 04/12/2014, 12:05
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: Optimizar consultas

primero, ponles indices a tus tablas a los campos que estas usando, para empezar los tipo fecha, segundo, los campos calculados los puedes sacar de tu consulta, ahora seria mas facil que dieras los datos que tienes, y que es lo que quieres obtener, quizas hasta te podria dar una mejor idea de como hacer el query ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 04/12/2014, 12:46
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Optimizar consultas

Gracias por la ayuda

En la imagen se ve la tabla donde Fechas_Pago es la tabla donde se registra todos los pagos programados, es decir si Javier tiene un plan de pagos de 6 cuotas es aqui donde aparecen 6 registros. ArchivosPS verifica que el pago sea efectivo, es decir En esta tabla cada registro es la constancia de que Javier haya pagado la cuota que le corresponde por lo tanto los campos por los que se referencian son Cod_prestamo y Nro_cuota, ahora el problema. Necesito obtener de un determinado mes todas las cuotas en mora de Javier, es decir si le toca pagar el 27-06-2014 y no lo pagó ingresa en mora en junio, si pagó el 28-06-2014 ingresa en mora en junio, si pago el 02-08-2014 ingresa en mora por contando los días hacia atras hata el día que debío pagar).
  #15 (permalink)  
Antiguo 04/12/2014, 12:49
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: Optimizar consultas

ahora un ejemplo de los resultados que quieres obtener.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #16 (permalink)  
Antiguo 04/12/2014, 13:04
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Optimizar consultas

En el mes de junio existe únicamente cuatro prestamistas que ingresaron en mora, pero los cuatro no pasan de 30 días de mora

Última edición por wilmer30; 15/12/2014 a las 12:57

Etiquetas: 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 18:30.