PDA

Ver la Versión Completa : Ayuda en Report


cams493
19/09/07, 20:26:52
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
20/09/07, 07:01:05
mmm dime cómo lo estás haciendo ahora y te echaré una mano.

Por ejemplo: si haces

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.

chemahuercano
20/09/07, 07:49:29
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.

cams493
21/09/07, 21:28:19
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.

ballan
24/09/07, 13:09:52
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