CQE (ancien moteur) est toujours utilisé dans les cas suivants :
l’utilisation de TRANSLATE, UPPER/UCASE, LOWER/LCASE
tri basé sur STRSEQ(*LANGIDUNQ) ou STRSEQ(*LANGIDSHR)
l’utilisation de fonctions TABLE (UDTF)
l’utilisation de logiques dans la clause FROM
l’utilisation de tables ayant des logiques avec select/omit (sauf si ajout de IGNORE_DERIVED_INDEX dans QAQQINI)
SQE :
A partir de la V5R4, prend en charge l’utilisation de LIKE (pas en V5R30).
A partir de la V5R4, le système liste les index qui lui paraissent nécessaires dans QSYS2/SYSIXADV,
passez vos traitements, puis allez y jeter un coup d’oeil.
Un moniteur de base de données vous permettra de vérifier quels traitements sont pris en charge par SQE ou CTE
Démarrer le moniteur sur un travail
STRDBMON OUTFILE(BIB/FICMON)
JOB(JOBNUM/USRPRF/JOBNAME)
TYPE(*DETAIL)
INCSYSSQL(*YES)
Arrêter le moniteur
ENDDBMON JOB(JOBNUM/USRPRF/JOBNAME)
La requête ci-dessous permet d’avoir le nombre de traitement pris en charges par le SQE ou le CTE
SELECT QQC16 AS « N = CQE / Y = SQE »,
COUNT(*)FROM BIB/FICMON
WHERE QQRID = 3014 GROUP BY QQC16
Pour aller dans le détail, consulter le fichier pour chaque traitement, afin de voir ce qu’il se passe.
! | Lorsque le système aiguille vers le CQE (ancien moteur utilisé par Query ou OPNQRYF), il n’y aura pas de suggestions en ce qui concerne ces requêtes car : le cache des plans d’accès n’est fait que par SQE, le nouveau moteur SQL. |