SQE / CQE

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.

Publié

dans

par

Étiquettes :