Maison >base de données >tutoriel mysql >Pourquoi ma requête SQL est-elle rapide dans SSMS mais lente dans mon application C# ?
Problème :
Une requête qui renvoie rapidement des données dans SQL Server Management Studio (SSMS) prend beaucoup de temps lorsqu'il est exécuté à partir d'un C# application.
Code :
Le code C# utilise un SqlDataAdapter et sa méthode Fill pour exécuter la requête.
using (var conn = new SqlConnection(...)) using (var ada = new SqlDataAdapter(...)) { ada.Fill(Logs); }
La requête SSMS est identique à celui exécuté dans le application.
Cause :
L'écart dans le temps d'exécution est dû à une différence dans la façon dont les paramètres sont gérés dans l'application et dans SSMS. Dans l'application, la méthode AddWithValue permet d'ajouter un paramètre de type NVARCHAR, tandis que dans SSMS, le paramètre est déclaré comme VARCHAR.
Solution :
Pour résoudre ce problème, soit :
ada.SelectCommand.Parameters.Add("@clientID", SqlDbType.Varchar, 200);
where client_id = cast(@clientID as varchar(200))
La première solution est préférée car elle résout également une pollution potentielle du cache problème.
Considérations supplémentaires :
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!