


Abweichung der Abfrageleistung im Code vs. SSMS
Eine Abfrage, die in SQL Server Management Studio (SSMS) reibungslos ausgeführt wird, kann übermäßig langsam sein, wenn im Code ausgeführt. Diese Diskrepanz, die während einer kürzlichen Codeentwicklung festgestellt wurde, veranlasste eine Untersuchung der zugrunde liegenden Ursache.
Code-Implementierung
Der zum Ausführen der Abfrage verwendete C#-Code lautet wie folgt:
using (var conn = new SqlConnection("Data Source=backend.example.com;...")) { using (var ada = new SqlDataAdapter(sqlCommand, conn)) { ada.SelectCommand.Parameters.AddWithValue("@clientID", ClientID); ada.SelectCommand.Parameters.AddWithValue("@dt", dtpFilter.Value); conn.Open(); Logs.Clear(); ada.Fill(Logs); // Time out exception for 30 sec limit. } }
SSMS-Abfrage
Die identische Abfrage, extrahiert aus dem C#-Code wird direkt in SSMS ausgeführt:
SELECT [PK_JOB],[CLIENT_ID],[STATUS],[LOG_NAME],dt FROM [ES_HISTORY] inner join [es_history_dt] on [PK_JOB] = [es_historyid] Where client_id = @clientID and dt > @dt and (job_type > 4 or job_type = 0 or job_type = 1 or job_type = 4 ) Order by dt desc
Analyse
Bei der Prüfung besteht ein subtiler Unterschied zwischen den beiden Abfragen. In der SSMS-Version wird der @clientID-Parameter als VARCHAR deklariert, während er im C#-Code mithilfe der AddWithValue-Methode hinzugefügt wird, die den Datentyp normalerweise basierend auf dem Typ der .NET-Variablen zuweist. In diesem Fall ist die ClientID-Variable vom Typ string, der in SQL Server NVARCHAR zugeordnet ist.
Auswirkungen
Dieser Unterschied hat erhebliche Auswirkungen auf die Abfrageleistung. Der Parametertyp NVARCHAR ermöglicht keine SARG-Filterung (Search Argument), eine wichtige Optimierungstechnik, die SQL Server verwendet, um Zeilen basierend auf indizierten Spalten schnell zu finden. Dadurch wird die Abfrage im C#-Code gezwungen, einen Tabellenscan durchzuführen, der weitaus weniger effizient ist als eine Indexsuche.
Lösung
Um das Problem zu beheben Bei Abweichungen ist es erforderlich, den Datentyp VARCHAR für den Parameter @clientID im C#-Code explizit anzugeben. Dies kann mit der folgenden Syntax erreicht werden:
ada.SelectCommand.Parameters.Add("@clientID", SqlDbType.VarChar, 200).Value = ClientID;
Indem sichergestellt wird, dass die Datentypen der Parameter mit denen in der SSMS-Abfrage übereinstimmen, kann die Anwendung die Leistungseinbußen vermeiden und die Abfrage in einem Zeitrahmen ausführen. effiziente Art und Weise.
Das obige ist der detaillierte Inhalt vonWarum ist meine SQL Server-Abfrage in SSMS schnell, in C#-Code jedoch langsam?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Dieser Artikel befasst sich mit MySQLs Fehler "Die freigegebene Bibliotheksfehler". Das Problem ergibt sich aus der Unfähigkeit von MySQL, die erforderlichen gemeinsam genutzten Bibliotheken (.SO/.dll -Dateien) zu finden. Lösungen beinhalten die Überprüfung der Bibliotheksinstallation über das Paket des Systems m

In diesem Artikel wird die Optimierung von MySQL -Speicherverbrauch in Docker untersucht. Es werden Überwachungstechniken (Docker -Statistiken, Leistungsschema, externe Tools) und Konfigurationsstrategien erörtert. Dazu gehören Docker -Speichergrenzen, Tausch und CGroups neben

In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

Dieser Artikel vergleicht die Installation von MySQL unter Linux direkt mit Podman -Containern mit/ohne phpmyadmin. Es beschreibt Installationsschritte für jede Methode und betont die Vorteile von Podman in Isolation, Portabilität und Reproduzierbarkeit, aber auch

Dieser Artikel bietet einen umfassenden Überblick über SQLite, eine in sich geschlossene, serverlose relationale Datenbank. Es beschreibt die Vorteile von SQLite (Einfachheit, Portabilität, Benutzerfreundlichkeit) und Nachteile (Parallelitätsbeschränkungen, Skalierbarkeitsprobleme). C

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

In diesem Handbuch wird die Installation und Verwaltung mehrerer MySQL -Versionen auf macOS mithilfe von Homebrew nachgewiesen. Es betont die Verwendung von Homebrew, um Installationen zu isolieren und Konflikte zu vermeiden. Der Artikel Details Installation, Starten/Stoppen von Diensten und Best PRA

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen
