Jump to content


Photo

consulta lenta


  • Please log in to reply
3 replies to this topic

#1 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 posts

Posted 10 March 2011 - 10:05 AM

hola gente como estan??  (h)  (Este tema esta relacionado con mi post anterior  :s )


puse mi consulta (codigo final del post anterior) en un SP (trabajo con SQL SERVER 2005)
asi q puse con un AdocStoredProc en mi quick report
y con este codigo hago la llamada a mi Reporte:




delphi
  1.      
  2.       QRMenoresVariaciones:=TQRMenoresVariaciones.Create(self);
  3.  
  4.       QRMenoresVariaciones.ADOStoredProc1.ProcedureName := 'menoresvar';
  5.       QRMenoresVariaciones.ADOStoredProc1.Parameters.Refresh;
  6.       QRMenoresVariaciones.ADOStoredProc1.Parameters.ParamByName('@mes').Value := mesjob;
  7.       QRMenoresVariaciones.ADOStoredProc1.Parameters.ParamByName('@anio').Value := aniojob;
  8.       QRMenoresVariaciones.ADOStoredProc1.Parameters.ParamByName('@periodo').Value := FVariaciones.periodo;
  9.       QRMenoresVariaciones.ADOStoredProc1.Parameters.ParamByName('@anioant').Value := anioant;
  10.       QRMenoresVariaciones.ADOStoredProc1.Parameters.ParamByName('@mesant').Value := mesant;
  11.       QRMenoresVariaciones.ADOStoredProc1.Parameters.ParamByName('@periodoant').Value :=  FVariaciones.periodoant;
  12.       QRMenoresVariaciones.ADOStoredProc1.ExecProc;
  13.       {QRMenoresVariaciones.ADOStoredProc1.active:=true;    }     
  14.       QRMenoresVariaciones.QRLabel9.Caption := FVariaciones.DBLookupComboBox4.Text;
  15.       QRMenoresVariaciones.QuickRep1.Preview;




tengo un form en dond el cliente seleciona el año, mes y periodo sobre los que hace la consulta
y esos valores despues se los paso a los parametros del SP
El tema es que la consulta dura muchoooooo  ^o| , pero por lo menos me devolvia la informacion correcta.
Pense q habia configurado mal el ASP (AdocStoredProc) ser comenze a tocar el ASP y le puse
la propiedad ACtive = true.
Ejecute mi aplicacion y la generacion del reporte no tardo nada...pero no me devuelve nada de informacion  :| :| 
asi q le puse Active=false, y tarda mucho pero me muestra la info  : : :
asi q se me ocurrio poner el Active=true despues de asignarle los parametros....
pero no cambio en nada...es por eso q en el codigo q les pase aparece comentada esa parte  8o|


que puede estar mal???  :s :s :s




Gracias por todo. :(


  • 0

#2 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 10 March 2011 - 10:09 AM

Hola.

Tienes que optimizar el procedimiento almacenado, añadiendo índices a las tablas involucradas para que el motor de SQL Server pueda agilizar las sentencias SQL del procedimiento almacenado.

Saludos.
  • 0

#3 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 posts
  • LocationOaxaca, México

Posted 10 March 2011 - 10:21 AM

Que tal abraham85, como bien apunta Marc, puede ser un problema con los indices, lo que por lo regular haría, es, con esos mismos parametros que introduces para generar el reporte, ejecutar el SP directamente en en al Management de SQL server, para ver su comportamiento, si es igual de tardado, bueno el problema es la consulta y necesitas optimizarla, desconozco como poder determinar u obtener estadísticas de un SP en SQL server, al menos con IBExpert para Firebird o Interbase, me dice que sucede con los indices de las tablas involucradas.

Saludos.


  • 0

#4 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 posts

Posted 10 March 2011 - 11:47 AM

Gracias amigos! Revise las tablas y si..faltaban varios indices  : : :
ahora las consultas van como piña!! (dicho argentino  :D )


Saludos amigos!
  • 0




IP.Board spam blocked by CleanTalk.