Il y a un moment j'avais une question que j'ai couru beaucoup pour un de mes utilisateurs. Il était encore évolué et s'est tordu mais finalement, il stablised et a couru assez vite, nous avons donc créé une procédure stockée.
Pour l'instant, donc normal.
La procédure stockée, cependant, était le chien de ralentir. Pas de différence entre la requête et le proc, mais le changement de vitesse a été massive.
[Arrière-plan, nous sommes en cours d'exécution de SQL Server 2005.]
Une amicale de l'administrateur local (qui ne travaille plus ici) a pris un coup d'oeil à la procédure stockée et dit "paramètre de l'usurpation d'!" (Edit: bien qu'il semble qu'il est peut-être aussi connu comme 'le paramètre sniffing", ce qui pourrait expliquer le manque de résultats Google quand j'ai essayé de le chercher.)
Nous abstraite de certains de la procédure stockée à une seconde, enveloppé à l'appel de cette nouvelle intérieure proc dans le pré-existants extérieur, appelé de l'extérieur et, hop, il était aussi rapide que l'original de la requête.
Donc, ce qui donne? Quelqu'un peut m'expliquer paramètre de la mystification?
Bonus de crédit pour
- en soulignant comment l'éviter
- ce qui suggère comment reconnaître la cause possible
- discuter des stratégies alternatives, par exemple, les statistiques, les indices, les clés, pour atténuer la situation