2011-10-10 3 views
1

Je comprends que les plans de requête pour les requêtes paramétrées sont mis en cache, mais à quel niveau? Si je renonce à ma connexion, est-ce que cela fait tomber le plan de requête? Si j'ai utilisé un autre objet de commande, est-ce que cela fait tomber le plan de requête? En bref, quel objet dois-je mettre en cache dans mon application (le cas échéant) pour conserver le plan de requête?Les requêtes paramétrées sont-elles automatiquement mises en cache par ODBC?

Répondre

3

Les plans de requête sont mis en cache par le serveur SQL lui-même et peuvent être recyclés sur plusieurs connexions différentes.

Dans MS SQL Server, la requête et la signature de paramètre sont toutes deux hachées dans des plans mis en cache localisés.

Cela peut être important pour les paramètres de longueur variable; Si vous ne spécifiez pas la taille, par exemple, d'un paramètre VARCHAR, il sera choisi pour vous - en fonction de la longueur réelle du paramètre fourni. Cela signifie différentes signatures de paramètres où les longueurs des paramètres varient. A la place, il convient de spécifier la longueur du paramètre VARCHAR, en garantissant la même signature de paramètre et en permettant le recyclage du plan.

Votre code client n'a pas besoin de faire quoi que ce soit pour que cela prenne effet.

Questions connexes