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 cette ressource
Percer le brouillard des rançongiciels
Explorez les méandres d’une investigation de ransomware, avec les experts de Palo Alto Networks et Unit 42 pour faire la lumière dans la nébuleuse des rançongiciels. Plongez au cœur de l’enquête pour comprendre les méthodes, les outils et les tactiques utilisés par les acteurs de la menace. Découvrez comment prévenir les attaques, les contrer et minimiser leur impact. Des enseignements indispensables aux équipes cyber.