J'ai récemment rencontré cette logique de jointure dans une
requête :
Field Test Field
A.CONO35 EQ B.CONO35
B.CONO35 EQ CONO60
CONO60 EQ A.CONO35
A.PNUM35 EQ B.PNUM35
B.PNUM35 EQ PNUM60
PNUM60 EQ A.PNUM35
Elle fonctionne, mais la logique de jointure suivante est
meilleure - et elle s'est exécutée en
deux secondes environ au
lieu de six :
Field Test Field
A.CONO35 EQ B.CONO35
A.CONO35 EQ CONO60
A.PNUM35 EQ B.PNUM35
A.PNUM35 EQ PNUM60
Pourquoi la seconde logique de jointure est-elle meilleure ?
Bien que Query Optimizer s’améliore à chaque release, il faut
quand même l’aider quelque peu. La première version comportait
des jointures inutiles, qui ne sont pas spécifiées efficacement
(dont un chemin de jointure circulaire de A vers B, B
vers C, C vers A).
En règle générale, il faut employer une jointure en utilisant des
champs spécifiés dans un chemin d’accès (ou fichier logique)
dans l’ordre des champs spécifiés et joindre au premier fichier
chaque fois que possible. Voilà quelques années, j’ai appliqué
ces règles à la requête d’un utilisateur et j’ai ainsi réduit le
temps d’exécution de plus de cinq heures à 40 minutes. Cette
règle s’applique non seulement au Query Optimizer mais aussi
aux requêtes SQL, SQL imbriqué et QM (Query Management),
car toutes utilisent les mêmes programmes système sous-jacents.
Téléchargez gratuitement cette ressource
Guide de Services Cloud Managés
Accélérer votre transformation digitale, protéger et sécuriser vos environnements Cloud avec les offres de support, d'accompagnement et de services managés.
Découvrez le TOP 3 des Services Managés pour accompagner la transformation de vos environnements Cloud, gagner en agilité et en sécurité dans un monde d'incertitudes.