SQL Server - Tiempo de respuesta en consulta

 
Vista:

Tiempo de respuesta en consulta

Publicado por eljhonb (124 intervenciones) el 15/01/2007 18:04:25
Buenas tarde,
Mi pregunta es la siguiente:
Tengo creadas una serie de estructuras con procedimientos almacenados y DTS.
En esta estructura existen dos tablas que son críticas: tb_encabezado_recaudos y tb_detalles_recaudo, las cuales tienen una relación de una a varias.
La tabla tb_detalles_recaudos tiene alrededor de 2629218 registros con un tamaño de registro de 389 (Maximo) y tb_encabezado_recaudos tiene 734623 registros con un tamaño de 2448 (Máximo).
Estas tablas poseen unos índices. La primera tiene 7 indices y la segunda 5 indices.
El tiempo que demora en realizar la siguiente consulta es bastante elevado (varia desde 1min y 30 seg hasta 10 min aproximadamente) para lo que se requiere, debido a que es una aplicación en línea,

Select EnRe.Crefi_Recauda,
EnRe.Fecha_Transmision as fecha_Transmision,
EnRe.Numero_Recibo_Caja as numero_recibo,
DeRe.valor_pagar as Total
Into TMP_FISCO_TRANSMISION_RECIBOS
From Tb_Fisco_Encabezados_Recaudos EnRe Left Join Tb_Fisco_Detalles_Recaudos DeRe
On EnRe.Numero_Recibo_Caja = DeRe.Numero_Recibo_Caja
Where EnRe.Id_Estado = 22 and
EnRe.Estado_Recibo = 26 and
EnRe.Transmitido = 0 And
DeRe.Id_Tipo_Documento_Pago <> 0 and
DeRe.Numero_Factura <> 0
Order by EnRe.Numero_Recibo_Caja

Cómo se puede disminuir este tiempo de consulta?
Es conveniente tener tantos indices sobre estas tablas? Si requieren información adicional sólo diganlo.
Esta estructura no la diseñé yo pero afecta el aplicativo que estoy diseñando.

Muchas Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tiempo de respuesta en consulta

Publicado por Isaías (3308 intervenciones) el 15/01/2007 19:48:33
Coloca tu estructura de query en tu analizador de consultas, utiliza el wizard de creacion de indices y revisa si te indica alguna cracion de estos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No me indica nada

Publicado por eljhonb (124 intervenciones) el 15/01/2007 20:03:48
No me indica nada, no me muestra ninguna creación de índices
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Perdón, si me indica

Publicado por eljhonb (124 intervenciones) el 15/01/2007 21:10:52
Sí me siguiere un índice.
Le dí aceptar a la creación de este índice pero sin embargo la consulta sigue siendo bastante lenta. Qmás puedo hacer para corregir este problema?

Es un inconveniente o problema tener 7 índices sobre una tabla que tiene 21 campos?

Muchas Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Perdón, si me indica

Publicado por Isaías (3308 intervenciones) el 15/01/2007 21:36:18
No es problema, aunque si deberias analizar si realmente necesitas esos indices, la regla dice, que toda columnas despues del where es candidata a ser indice.

Si pudieras crear los 21 campos como indices, no te garantiza que tendras un buen tiempo de respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Perdón, si me indica

Publicado por eljhonb (124 intervenciones) el 15/01/2007 23:19:39
Sí, eso último que tú dices es cierto y eso lo tengo claro.
El análisis de la utilidad de los índices es una tarea ardua porque como dije antes no fui yo quien creó la estructura y de esta a su vez dependen varias aplicaciones, entre ellas la que yo estoy diseñando.

Creo que lo mejor será tratar de crear un índice que optimice las consulta en la que estoy interesado y luego sí, con más tiempo, tratar de buscar que tan factibles o útilies son los demás índices que están creados.

Muchas Gracias por tus respuestas Isaías.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Perdón, si me indica

Publicado por Isaías (3308 intervenciones) el 16/01/2007 00:56:26
De nada, suerte.........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Perdón, si me indica

Publicado por monky (56 intervenciones) el 19/01/2007 01:38:55
Lo más fácil para optimizar una query es realizar un show plan al plan de ejecución, con el fin de ver exactamente porqué los índices no están tomados.... con toda seguridad debe estar haciendo un tablescan a la tabla más grande y eso hace que recorra la tabla completa que se traduce en tu mal tiempo de respuesta.

Lo otro que puedes hacer es ver cuales son los indices que tiene la tabla y tratar por todos los medios de intentar usar el indice clustered.. este es el indice primario.... Para ver los indices usas el proc almacenado sp_helpindex nombredetutabla

Bueno, eso puedo aportar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar