Ayuda en Report

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • cams493
    Junior Member
    • sep
    • 17

    #1

    Ayuda en Report

    Buenas Tardes, actualmente estoy haciendo un Report el cual tengo que hacer una lectura muy grande de datos, osea muchos registros en mi tabla interna, quisiera saber si habra alguna funcion que pueda optimizar el tiempo que tarda el reporte, aproximadamente tarda 1 hora
  • josellamazares
    Member
    • jun
    • 34

    #2
    mmm dime cómo lo estás haciendo ahora y te echaré una mano.

    Por ejemplo: si haces
    Código:
     LOOP at itab.
          select from
         where campo = itab-campo
      ENDLOOP
    pues se optimiza con un SELECT FOR ALL ENTRIES + un READ o LOOP

    los SELECT ... ENDSELECT tampoco se recomiendan

    Si puedes, pásame el código y te digo como optimizarlo.

    Un saludo.

    Comentario

    • chemahuercano
      Junior Member
      • ene
      • 2

      #3
      La verdad es que es dificil intentar ayudarte, sin conocer el flujo del programa.

      Hace poco hice un interfaz de carga de datos para una tabla de diccionario desde un excel, y simplemente construi una tabla interna y un insert de tabla.
      Tardaba un segundo en meter 700 registros, pero claro si en tu caso tienes campos calculados, deberías de crear las tablas internas necesarias para que las busquedas se hagan siempre mediante read tables.

      En resumen es preferible hacer un Select inmenso a la base de datos y luego un loop con todos los read tables que necesites, a hacer un select detro de un loop.

      Si logras reducir los accesos a las tablas de diccionario a lo mínimo, tu report se puede optimizar poco más.

      Espero que te sirva.
      Saludos.

      Comentario

      • cams493
        Junior Member
        • sep
        • 17

        #4
        Para explicar mejor la situacion es que yo tengo 2 grandes bloques de codigo, que hacen practicamente lo mismo. En la primera se recorre una tabla interna de aprox. 10000 registros y alli hago mis calculos, no acceso a BD dentro del LOOP, ese primer recorrido de los 10000 registros lo hace rapido.

        El segundo recorro otra tabla interna, pero esta tiene aprox 100000 registros, al igual no acceso a BD dentro del LOOP, solo hago ciertos calculos, el detalle esta en que lo recorre pero tarda. Nose si se deba a que debo liberar memoria pero no consigo que hacer.

        Comentario

        • ballan
          Senior Member
          • oct
          • 671

          #5
          Ayudaria mucho que nos dijeras exactamente que es lo que tienes que hacer pero asi a bote pronto por lo que cuentas te diria que:

          Las tablas HASH y SORTED pueden serte muy utiles para manejar volumenes muy grandes de datos ya que puedes hacer read table por clave y son rapidisimos

          Si el problema es el numero de registros prueba a partir tu tabla X en 'n' trozos mas pequeños y luego fusionar los resultados

          Comentario

          Trabajando...