Bases de Datos - Reporte de Base

 
Vista:

Reporte de Base

Publicado por Klose (1 intervención) el 03/11/2010 18:03:13
Que tal ! quiero ver si alguien me puede orientar, estoy bastante perdido diria yo.

Quiero resolver un problema que tengo con un reporte que esta tardando muchisimo en generarse.

Tengo una base de datos y dentro una tabla de ventas, la base mide 52 GB. Requiero sacar un reporte de ventas por dia, semana y mes. Pero al generar el reporte este tenia que hacer calculos, tomar y cruzar datos con otras tablas, el caso es que tardaba mas de 6 hrs. Lo que hice despues es hacer el calculo(corre un store procedure) y en lugar de mandarlo a un reporte lo mandé a una tabla. Ahora el reporte tarda en generarse 1 minuto pero la tabla esta creciendo descomunalmente ya que guarda todos los resultados de los calculos diarios, por semana y por mes.

Que debo hacer para encontrar el punto medio que no tarde el reporte y que no tenga que estar guardando todos los resultados ? con que me documento para resolver esto ?

De antemano gracias, que igual es basica mi pregunta pero apenas estoy empezando a aprenderle a esto de las bases.

HELP ME PLEASE !
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:Reporte de Base

Publicado por Franklin Gamboa (188 intervenciones) el 03/11/2010 19:47:47
Buenas,

Has intentado poner indices por fecha en la tabla que generaste? ahora,que tanto requieres guardar esos datos? yo propondr'ia crear un trabajo calendarizado para que borre los datos una vez alcanzan el mes y una semana de viejos, asi se controla el tamaño de la tabla.

Tambien propongo eliminar esa tabla y crear indices en las tablas que generan el reporte para hacerlo mas veloz, ya que me parece mas un problema de indexación que un problema de tamaño de la base de datos (doy mantenimiento a una base de datos de 100GB, solo la tabla mas grande mide 2,5 GB y son como 500 tablas, la consulta o reporte que mas dura demora como 2 minutos).

Trata de crear un indice que incluya los campos en los joins y en el where para cada tabla, luego de eso toma el execution plan para ver que solo tenga index seeks o index scans, luego de eso, si ves cosas asi como sortings o similares, trata de incluir en el indice las columnas por las que esta ordenando, asi te aseguro que mejorarás la velocidad de la consulta.

Espero haberte ayudado.
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