Bonjour,
J'ai eu un problème sur une procédure stockée. Elle mettait 23 seconde à s'exécuter. Après recherche, il s’avère qu'un select prend 22 secondes d’exécution. Le plan d’exécution me semble curieux (2 boucle imbriquée?)
Après plusieurs tests, je constate les faits suivant:
- l'instruction posant problème s’exécute en moins de 1 seconde hors procédure stockée
- en supprimant le tri selon la colonne, l’exécution est immédiate.
Dans l'image est présente la requête 1 qui pose problème.
J'ai solutionné le problème en mettant le résultat (sans le top 1) de la requête 2 dans une table temporaire, puis en faisant un top 1 + order by sur cette table temporaire.
Du coup, je m'interroge sur l'utilisation de la clause order by. J'ai l'impression que l'order by ne s'applique pas uniquement à mon jeux de résultat. Je souhaiterai avoir vos avis.
La table lue contient 3 millions de lignes, les index non fragmentés. La requete retourne 600 lignes.
Partager