Aller au contenu

CPF427F

La requête dépasse la limite de durée ou de mémoire définie.

Gravité 50 · Fin anormale du travail

Cause

La requête de base de données qui allait démarrer a une durée d'exécution estimée à &1, ce qui excède la limite indiquée &2, ou son utilisation de mémoire temporaire de &3 dépasse la limite spécifiée &4. Les limites de durée de requête et de mémoire temporaire sont définies via la commande CL CHGQRYA.

Que faire

Les modifications exposées ci-dessous pourraient diminuer la durée estimée de la requête ou l'utilisation estimée de la mémoire temporaire.

  • Modifiez la requête en ajoutant des restrictions afin de diminuer le nombre d'enregistrements retournés.
  • Modifiez les critères de sélection des enregistrements de la requête afin d'utiliser un chemin d'accès existant qui accélère le traitement des enregistrements.
  • A l'aide de la commande CL CRTLF ou de l'instruction SQL CREATE INDEX, créez un chemin d'accès sur clé qui corresponde aux critères de sélection d'enregistrements de la requête.
  • Modifiez la spécification de tri pour éviter la constitution d'un chemin d'accès temporaire ou l'exécution d'un tri.
  • Modifiez les spécifications de zones de groupage de sorte qu'elles correspondent aux zones clés les plus à gauche d'un chemin d'accès existant. Cela permet d'utiliser le chemin d'accès existant.
  • Si vous utilisez la commande CL OPNQRYF (Ouvrir un fichier de requête) pour lancer votre requête, affectez la valeur *FIRSTIO au paramètre OPTIMIZE, afin que l'optimiseur de requête considère que la requête n'aboutira pas et, par conséquent, qu'il réduise sa durée estimée.
  • Si vous utilisez une requête SQL, indiquez la clause OPTIMIZE FOR NN ROWS, où NN représente le nombre d'enregistrements dont l'extraction est prévue avant la fin de la requête. Grâce à cette clause, l'optimiseur de requête considère que la requête n'aboutira pas et, par conséquent, qu'il doit réduire la durée estimée.
  • Modifiez le type de sortie de votre requête de sorte que les résultats soient affichés. Par exemple, affectez la valeur *DISPLAY au paramètre OUTTYPE de la commande CL RUNQRY (Lancer QUERY).
  • Affectez une valeur différente au paramètre QRYTIMLMT de la commande CL CHGQRYA afin de modifier la durée de requête.
  • Indiquez une nouvelle limite de mémoire temporaire à l'aide du paramètre QRYSTGLMT de la commande CHGQRYA CL.
  • Vous trouverez des informations et des conseils relatifs aux performances dans les messages de débogage de requête qui figurent dans l'historique du travail.

Variables du message

Quand le système envoie le message, chaque variable est remplacée par une valeur réelle : un nom d'objet, de bibliothèque, un code...

VariableTypeLongueur
&1 *BIN 4
&2 *BIN 4
&3 *BIN 4
&4 *BIN 4

Sur votre IBM i

Afficher la description complète du message :

DSPMSGD RANGE(CPF427F) MSGF(QSYS/QCPFMSG)

L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :

MONMSG MSGID(CPF427F) EXEC(DO)
  /* traitement de l'erreur */
ENDDO