Bonjour,
je souhaiterais comprendre la grande différence de temps de traitement constatée entre deux requêtes pourtant théoriquement similaires.
1/ La requête qui ne se termine jamais
La requête est de type :
T1
LEFT JOIN T2 ON T1.COLONNE=T2.COLONNE_A OR T2.COLONNE_B
Résultats : aucun après 20 minutes d'exécution,
Plan d'exécution : indique qu'une Nested Loops a un Estimated Operator Cost un peu supérieur au million (en raison d'un CPU cost élevé).
2/ La requête à résultats quasi-immédiats
Type :
T1
LEFT JOIN T2 ON T1.COLONNE=T2.COLONNE_A
LEFT JOIN T2 ON T1.COLONNE=T2.COLONNE_B
Résultats : en moins de 10 secondes
Plan d'exécution : Estimated Operator Cost de 50 environ
3/ Comparaison
La seconde requête doit cependant ramener sensiblement la même chose (seulement 200 lignes en plus environ). Cependant, son temps de traitement est environ 20.000 fois supérieur.
4/ Environnement
SQL Server 2008 express edition
T1 et T2 possèdent 400.000 lignes environ, pour une taille de 200 Mo en moyenne.
Merci à qui pourra m'expliquer cet écart.
Partager