Conseils de rédaction des requêtes
Quelques conseils pour rédiger vos requêtes 🙂
Pour avoir des performances optimales, utilisez dans les POUR CHAQUE et RECH des champs d'index, dans l'ordre de l'index, avec des égalités strictes. Sinon, préférer des conditions avec « SI » plus bas dans la boucle.
Il n'est pas obligatoire d'utiliser tous les champs de l'index, on peut utiliser seulement les premiers avec de bonnes performances.
Les conditions à base de « COMMENCE PAR », « CONTIENT », « > » sont moins performantes que celles à base de « = ».
De manière générale, éviter avec ces conditions (« COMMENCE PAR », « CONTIENT », « > ») les juxtapositions de conditions de type (POUR CHAQUE Cond1 ET Cond 2 ET Cond3...). Préférer des conditions avec « SI » plus bas dans la boucle.
Exemple :
POUR CHAQUE (Cond1) (Cond1 portant si possible sur une égalité stricte)
SI (Cond2)
SI (Cond3)
action
FB
FB
FB
Si vous faites une recherche sur un enregistrement précis selon des conditions qui suivent un index unique, utiliser RECH (Rechercher) plutôt que RECH PREM (Rechercher Premier).
Exemple :
RECH TBD/SOC DTD CDClient AVEC DTD CDClient.CliResRef = VLO.CliResRef ET DTD CDClient.CliGenRef = VLO.CliGenRef
action
FB
Possible car CliResRef+CliGenRef est l’index unique de la table CDClient.
Pour aider à la bonne rédaction des requêtes, les requêtes de type REB, RCT et PSD sont contrôlées lors de la génération et la colonne « War » vient se cocher pour les requêtes devant être contrôlées (La branche « Requêtes en warning » regroupe toutes les requêtes dont la génération a révélé au moins un avertissement). L’action « Consultation Problèmes Requête » (sur les requêtes n’étant pas en erreur de génération) présente la liste des avertissements :
![]() | Il est indiqué pour chaque avertissement :
|