Vous voulez avoir des informations sur des exécutions SQL.

la meilleur méthode est de prendre la requête que vous voulez analyser et de l’exécuter dans visual explain.

Mais ce n’est pas toujours possible , dans le cas d’une chaine avec du SQL embarqué .

Si vous avez fait du SQL statique vous pouvez avoir des informations au niveau des programmes par PRTSQLINF.

Dans certain cas on n’a pas ces possibilités, le plus simple est alors de ce mettre en degug et d’exécuter votre chaine, attention ce n’est pas un mode à mettre en place en production, ca augmente considérablement les informations de log.

Vous devez démarrer le debug , le plus souvent en indiquant que vous autorisez les mises à jour sur les fichiers de production.
==>strdbg updprod(*yes)

Vous lancer ensuite votre traitement qui va générer un log avec des messages de votre optimiseur SQL, c’est des messages id CPI43xx

il vous suffit ensuite d’analyser votre log et regarder si certain vous donne des informations intéressantes.
exemple :
CPI432F index à ajouter

Pour vous aider nous avons fait cet outil DBGSQLJOB que vous retrouverez ici et qui vous facilite la démarche
https://github.com/Plberthoin/PLB/tree/master/GTOOLS

Vous soumettez votre programme comme ceci
sbmjob cmd(DBGSQLJOB cmd(call monpgm) ) job(dbgsql)

et vous obtenez un fichier dbgsql dans la bibliothèque indiquée (par défaut *curlib) qui contiendra les messages de votre optimiseur.

Vous n’avez plus qu’a les analyser ensuite par select * from DBGSQL .

limitation :
dans cet outil, nous traitons en commit(*none) les requêtes SQL, si ce n’est pas le cas chez, vous adaptez le mode.

Rappel :
80 % de votre performance SQL c’est les index , suivez les recommandations de INDEX ADVISOR.