Vous voulez avoir des informations sur des exécutions SQL.
La meilleure 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 certains cas, on n’a pas ces possibilités. Le plus simple est alors de ce mettre en debug et d’exécuter votre chaine, attention ce n’est pas un mode à mettre en place en production, ça 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 lancez ensuite votre traitement qui va générer un log avec des messages de votre optimiseur SQL, ce sont des messages id CPI43xx
Il vous suffit ensuite d’analyser votre log et regarder si certains messages vous donnent 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.