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

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

Linda Hamilton
Libérer: 2025-01-03 08:13:39
original
405 Les gens l'ont consulté

Why is My SQL Query Much Slower in ASP.NET than in SSMS?

Différence de performances entre SQL Server Management Studio et les applications ASP.NET

Lors de l'exécution de requêtes SQL, il n'est pas rare de rencontrer des écarts de performances importants entre SQL Server Management Studio (SSMS) et les applications Web. De tels problèmes de performances peuvent être déroutants et frustrants. Dans ce cas, une requête qui s'exécute en quelques secondes dans SSMS prend quelques minutes à s'exécuter dans une application ASP.NET.

Exploration du reniflage des paramètres

Une explication potentielle de cette disparité est un phénomène connu sous le nom de reniflage de paramètres. Le reniflage des paramètres se produit lorsque l'optimiseur de requêtes SQL Server utilise différents plans d'exécution pour la même requête en fonction des types de données et des valeurs des paramètres fournis lors de la compilation.

Dans la requête fournie, le paramètre @customerID est utilisé pour filtrer les résultats. Lorsque la requête est exécutée dans SSMS, l'optimiseur peut choisir un plan d'exécution plus efficace en fonction de la valeur spécifique de @customerID. Cependant, lorsque la requête est exécutée dans l'application ASP.NET, l'optimiseur peut compiler la requête en utilisant un plan moins optimal en raison du type de données ou de la valeur différente de @customerID à ce moment-là.

Atténuation Reniflage de paramètres

Pour atténuer le reniflage de paramètres, tenez compte des éléments suivants stratégies :

  • Utiliser des requêtes paramétrées : Utilisez des requêtes paramétrées au lieu de concaténer les valeurs des paramètres dans la chaîne de requête, car cela oblige l'optimiseur à réévaluer le plan d'exécution pour chaque exécution.
  • Recompiler le plan d'exécution : Si le plan d'exécution doit être recompilé en fonction de la modification des paramètres valeurs, utilisez des indicateurs de requête tels que OPTION (RECOMPILE) ou OPTIMIZE FOR (@customerID).
  • Utiliser les plans de requête : Si la recompilation du plan d'exécution pose problème, envisagez d'utiliser des plans de requête mis en cache ou paramétrés. pour garantir que le même plan est toujours utilisé, quelles que soient les valeurs des paramètres.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal