|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2004 Messages : 13 ![]() |
Bonjour à tous,
Voici le problème auquel je suis exposé en SQLServer 2008 Volumétrie des données récupérées : environ 19 000 lignes. Lorsque j'exécute une procédure stockée à l'aide des paramètres, elle prends plus d'une minute à s'exécuter. Par contre, si j'exécute le corps de la procédure avec les même paramètres, elle met 6 secondes. Avez-vous une idée d'où le problème peut provenir ? Merci d'avance. |
|
|
01
|
|
|
#2 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Bonjour,
Postez le code de votre procédure ... ++ |
|
10
|
|
|
#3 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Avez-vous créé des index depuis la première exécution de la procédure stockée en question ? Si c'est la cas, il est possible que celle ci ne les prenne pas en compte car son plan d'exécution est en cache depuis la première exécution. Refaites vos tests en exécutant votre procédure avec l'option WITH RECOMPILE et dites nous ce qu'il en est... (ou exécutez avant de lancer votre procédure) |
|
|
00
|
|
|
#4 | ||||||
|
Invité de passage
![]() Inscription : mai 2004 Messages : 13 ![]() |
Voici le code lancé avec un temps d'execution d'une minute:
Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2004 Messages : 13 ![]() |
J'ai essayé avec le "with recompile" mais sans succès...
|
|
|
00
|
|
|
#6 | ||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Re,
Votre dernière jointure diffère entre les deux versions ! Code sql :
!= Code sql :
|
||||
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : mai 2004 Messages : 13 ![]() |
En effet, un oubli de ma part lors de mes tests mais le problème ne vient pas de là.
Je viens de tester et le résultat est toujours le même. je repost le corps actualisé de la proc : Code :
|
||
|
|
00
|
|
|
#8 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Pouvez vous poster le plan d'exécution réel lorsque vous lancez la procédure et lorsque vous lancez la requête SQL directement ?
++ |
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : mai 2004 Messages : 13 ![]() |
Voici les deux plans d'execution au format XML et sqlplan.
Chose que je viens de remarquer, le plan d'execution de la procédure me renvoie ce message alors que l'autre pour la requete non : Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mai 2004 Messages : 13 ![]() |
Personne n'a d'idée ?
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : mai 2004 Messages : 13 ![]() |
J'ai créé un index non clustered sur les champs préconisé par la proc et c'est tout bon.
Merci à vous. |
|
|
00
|
|
|
#12 | ||
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Vu l'index qu'il demande de créer je trouve cela bizarre.
Vous devriez essayer de forcer vos variables de votre procédure en local pour voir si le plan d'exécution est meilleur. Code :
|
||
|
00
|
|
|
#13 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 665 ![]() |
Bonjour,
J'appuie la réponse de Mikedavem Citation:
Il arrive souvent que les index recommandés ne soient pas utilisés par l'optimiseur, et dans ce cas cela indiquerait un problème de statistiques de colonnes ... @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com