Heim >Datenbank >MySQL-Tutorial >Warum ist meine SQL-Abfrage in SSMS schnell, in meiner C#-Anwendung jedoch langsam?

Warum ist meine SQL-Abfrage in SSMS schnell, in meiner C#-Anwendung jedoch langsam?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 07:04:34149Durchsuche

Why is my SQL Query Fast in SSMS but Slow in my C# Application?

Code wird in der Anwendung langsam, in SSMS jedoch schnell ausgeführt

Problem:

Eine Abfrage, die Daten schnell in SQL Server zurückgibt Management Studio (SSMS) nimmt viel Zeit in Anspruch, wenn es von C# aus ausgeführt wird. Anwendung.

Code:

Der C#-Code verwendet einen SqlDataAdapter und seine Fill-Methode, um die Abfrage auszuführen.

using (var conn = new SqlConnection(...))
using (var ada = new SqlDataAdapter(...))
{
    ada.Fill(Logs);
}

Die SSMS-Abfrage ist identisch mit der im ausgeführten Anwendung.

Ursache:

Die Diskrepanz in der Ausführungszeit wird durch einen Unterschied in der Art und Weise verursacht, wie Parameter in der Anwendung und im SSMS behandelt werden. In der Anwendung wird die AddWithValue-Methode verwendet, um einen Parameter vom Typ NVARCHAR hinzuzufügen, während in SSMS der Parameter als VARCHAR deklariert wird.

Lösung:

Auflösen Beheben Sie dieses Problem entweder:

  1. Verwenden Sie den Konstruktor, der einen Typ akzeptiert, wenn Sie Parameter in der Anwendung hinzufügen Code:
ada.SelectCommand.Parameters.Add("@clientID", SqlDbType.Varchar, 200);
  1. Umwandeln des Parameters in den SQL-Text:
where client_id = cast(@clientID as varchar(200))

Die erste Lösung wird bevorzugt, da sie auch eine potenzielle Cache-Verschmutzung angeht Problem.

Zusätzliche Überlegungen:

  • Stellen Sie sicher dass sowohl die Anwendung als auch SSMS denselben Computer und dieselbe Anmeldung verwenden.
  • Die in der Abfrage referenzierten Tabellen verfügen über entsprechende Indizes und funktionieren in SSMS gut.
  • Berücksichtigen Sie die Auswirkung des Parameter-Caching auf die Abfrage Leistung.

Das obige ist der detaillierte Inhalt vonWarum ist meine SQL-Abfrage in SSMS schnell, in meiner C#-Anwendung jedoch langsam?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn