Accueil du site > Les articles > Améliorer les performances dans les traitements en SQL
Version à imprimer Enregistrer au format PDF

Améliorer les performances dans les traitements en SQL

mardi 23 novembre 2004, par David Malle Visites  38683

Les performances des traitements écrits en SQL sont souvent un sujet de discussion entre partisants des lectures natives et partisants des lectures SQL.

La méthode native est incontestablement encore la plus performante en terme de rapidité d’accès.

La méthode SQL comporte des avantages :
- souplesse d’écriture du code,
- puissance du code puisqu’il est possible de construire dynamiquement les requêtes.
- facilite la maintenance dans le cas des modifications de fichiers
- un bon compromis entre les points pré-cités et la performance qui s’est beaucoup améliorée.

Cet article s’enrichira au fur et à mesure.


Appel répétitif d’une requête de type SELECT X INTO Y FROM T

La requête SQL suivante permet de récupérer le libellé article :

Select libelle into :wlibelle
 from article
where code = :wcode

Cas 1 :
- Programme A = fiche article appel du programme B (paramètre = code article)
- Programme B = récupération du libellé article via la requête SQL

Dans un programme interactif (affichage d’un article par exemple), si vous voulez récupérer une valeur via un SELECT INTO, (le libellé relatif au code article par exemple), le faire par SQL ne vous posera pas de problème de performance. L’utilisateur face à son écran ne constatera pas de manque de performances.

Cas 2 :
- Programme A = Batch d’édition des articles appel le programme B plusieurs milliers de fois (paramètre = code article)
- Programme B = récupération du libellé article via la requête SQL

Sans optimisation, vos temps de traitement vont exploser.

Que faire dans ce cas là :
- Appeler le programme B sans le fermer à chaque appel
- Pour ne pas fermer les curseurs à chacune des requêtes, inclure dans le programme B l’instruction SQL : SET OPTION CLOSQLCSR = *ENDACTGRP
- Fermer le programme B en fin de batch. La fermeture clos également le curseur.

Le gain est plus que significatif