Maison >base de données >tutoriel mysql >Pourquoi ma requête ASP.NET est-elle plus lente que dans SSMS ?

Pourquoi ma requête ASP.NET est-elle plus lente que dans SSMS ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-02 17:35:39208parcourir

Why is My ASP.NET Query Slower Than in SSMS?

Performances lentes des requêtes dans ASP.NET par rapport à SSMS

L'écart dans le temps d'exécution des requêtes entre SQL Server Management Studio (SSMS) et un L'application ASP.NET peut être attribuée à un phénomène connu sous le nom de « reniflage de paramètres ».

Le reniflage de paramètres se produit lorsque SQL Server compile et exécute une requête en fonction des valeurs de ses paramètres lors de la première exécution. Ces valeurs peuvent être différentes de celles utilisées lors des exécutions ultérieures, entraînant des plans d'exécution sous-optimaux et une dégradation des performances.

Dans votre scénario spécifique, les performances de la requête varient sur le site Web ASP.NET car les valeurs du paramètre @customerID sont en train de changer. La première fois que la requête est exécutée après une modification de la valeur du paramètre, elle crée un plan d'exécution efficace basé sur ces valeurs. Cependant, les exécutions ultérieures avec des valeurs de paramètres différentes peuvent entraîner un ralentissement des performances en raison de l'utilisation du plan d'exécution mis en cache et non optimal.

Pour résoudre ce problème, envisagez les techniques suivantes :

  • Recompilez la requête avec sp_recompile : Cette procédure stockée oblige SQL Server à recompiler la requête à chaque exécution, garantissant ainsi que le plan d'exécution est optimisé pour les valeurs actuelles des paramètres.
  • Utiliser les astuces de requête : L'astuce "OPTION (RECOMPILE)" demande à SQL Server de recompiler la requête à chaque fois qu'elle est exécutée, similaire à sp_recompile.
  • Paramétrez la requête dans votre code ASP.NET : Le framework d'accès aux données d'ASP.NET (par exemple, ADO.NET) paramètre automatiquement les requêtes, empêchant SQL Server de supposer de manière incorrecte les types de paramètres.
  • Effacer le cache de procédure : L'utilisation de la commande "DBCC FREEPROCCACHE" efface le cache de procédure, forçant SQL Server pour recompiler toutes les procédures stockées ou requêtes qui ont été mises en cache.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn