Hola Mauricio:

Deberias hacer un analisis de las sentencias ejecutadas y determinar la
creacion de indices a las tablas, no importa que sean enormes ya que con
indices adecuados las consultas deberian ser rapidas.

Prueba lo siguiente:
1.- Hacer un debug al trabajo que ejecuta el programa, para lo cual debes
usar el comando STRSRVJOB + F4, llenas los datos requeridos (nombre
trabajo,usuario, etc)
2.- Luego STRDBG + F4, aqui colocas en el parametro UPDPROD *yes
3.- Ejecutas el programa
4.- Luego vas al WRKACTJOB, ubicas el trabajo, luego opcion 5, luego opcion
10 y aqui encontraras la informacion del optimizador de consultas,
indicandote los indices que analizo, que utilizo, la recomendacion de
creacion de indices, metodo de acceso a las tablas, etc
5.- Luego de tu analisis, ENDDBG y ENDSRVJOB

Ahora si lo quieres ver en grafico y con mas detalle de informacion tambien
puedes hacerlo a traves del Navegador de Operaciones.

Saludos
Lima- Peru


-----Mensaje original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] nombre de
[EMAIL PROTECTED]
Enviado el: Viernes, 24 de Octubre de 2008 01:36 p.m.
Para: [email protected]
Asunto: CONSULTA SOBRE RPGLE Y SQL


Estimados,

Recientemente estuve cambiando una aplicación hecha  de unas 30 consultas
(Query/400). Cada query extrae datos de dos tablas, se totalizan y se genera
un archivo. Cada consulta va agregando datos al archivo de salida. Lo unico
que cambia entre consulta en la selección de registros, que es bastante
diversa (en algunos casos evalúa una campo, tres campos, en otros 4, etc.)
Los registros recuperados por cada querys son pocos pero las tablas
utilizadas son enormes.

Bueno, resulta que se ha sustituido esto (los 30 querys) por un RPGLE con
SQL-embebido. Lo que se hizo es construir una sentencias preparadas por cada
uno de los querys. Tenemos un archivo donde hemos colocando  los where,
hacemos un Dow con este archivo y por cada lectura construimos un sentencia
preparada insertadole su respectivo where. La sentencia preparada que
creamos es más o menos así:

insert "archivodesalida" select xx from tabla1 left join tabla2 on xx=bb
where "(del archivo)" group by xxx

Funciona solo que muy lento en comparación de los querys. Viendo los
mensajes del depurador, dice que se ha reconstruido el plan de consultas y
advierte que si se esta reconstruyendo mucho puede ser un error en la
aplicación.

Mi consulta va en como hacer para que no se reconstruya el plan de acceso o
si es el tipo de sentencia lo malo, mejor creo un cursor que accedo los
registros con un fetch... ¿no se?, alguien tendrá una idea.

SALUDOS A TODOS de El Salvador.

MAURICIO HERRERA


__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
For all your IT requirements visit: http://www.transtec.co.uk


-- 
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
For all your IT requirements visit: http://www.transtec.co.uk

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a