Diskrepanz bei der Abfrageleistung zwischen Code und SSMS
Ein Entwickler stellte einen erheblichen Leistungsunterschied fest, als er dieselbe Abfrage in C#-Code und SQL Server Management ausführte Studio (SSMS). Während die Abfrage in SSMS in weniger als 3 Sekunden abgeschlossen wurde, dauerte sie bei der Ausführung in der Anwendung mehr als 3 Minuten.
Ursache des Leistungsproblems
Nach weiterer Prüfung: Es wurde festgestellt, dass es sich bei dem Problem um einen geringfügigen Unterschied zwischen den im C#-Code und in SSMS verwendeten Abfrageparametern handelt. Im C#-Code wurde der Parameter für die Client-ID als NVARCHAR-Typ übergeben, während er in der SSMS-Abfrage als VARCHAR-Typ deklariert wurde.
Auswirkungen auf die Vorrangigkeit des Datentyps
Aufgrund der Prioritätsregeln für Datentypen verhinderte der NVARCHAR-Parameter in der C#-Abfrage, dass die Abfrage eine Indexsuche nutzte. Dies führte zu einem Tabellenscan, der die Ausführungszeit erheblich verlängerte. Im Gegensatz dazu ermöglichte der VARCHAR-Parameter in der SSMS-Abfrage dem Abfrageoptimierer die Verwendung einer Indexsuche, was zu einer schnelleren Ausführung führte.
Lösung für Leistungsprobleme
Um das zu beheben Aufgrund der Leistungsdiskrepanz hatte der Entwickler zwei Optionen:
-
Option 1: Parameter mit Angabe verwenden Typ
Durch die Verwendung des Konstruktors, der einen Typ akzeptiert, hat der Entwickler den Parameter explizit als VARCHAR-Typ definiert:
Parameters.Add("@clientID", SqlDbType.Varchar, 200)
Dadurch wird sichergestellt, dass der Parameter als korrekter Typ übergeben wird und beeinträchtigt nicht die SARG-Fähigkeit der Abfrage.
-
Option 2: Parameter in SQL umwandeln Abfrage
Alternativ könnte der Entwickler den Parameter innerhalb der SQL-Abfrage wie folgt umwandeln:
where client_id = cast(@clientID as varchar(200))
Diese Methode behebt auch das Typproblem und ermöglicht der Abfrage, die Indexsuche zu nutzen .
Zusätzlich Empfehlungen
- Explizite Parameterlänge verwenden: Um eine Cache-Verschmutzung zu vermeiden, wird dem Entwickler empfohlen, die Länge des VARCHAR-Parameters explizit anzugeben, wenn Option 1 verwendet wird.
- Referenz empfohlener Artikel: Dem Entwickler wird empfohlen, den Artikel „Langsam in der Anwendung, schnell in SSMS?“ zu lesen. Understanding Performance Mysteries“ für weitere Einblicke in Leistungsunterschiede zwischen Code und SSMS.
Das obige ist der detaillierte Inhalt vonWarum ist meine SQL-Abfrage in C# 3 Minuten langsamer als in SSMS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

MySQLstringtypesimpactstorageandperformanceasfollows:1)CHARisfixed-length,alwaysusingthesamestoragespace,whichcanbefasterbutlessspace-efficient.2)VARCHARisvariable-length,morespace-efficientbutpotentiallyslower.3)TEXTisforlargetext,storedoutsiderows,

Mysqlstringtypesincludevarchar, Text, char, enum, undset.1) varcharisversatileforVariable-LengthStringuptoaspecifiedLimit.2) TextissidealforlargetextStorageWithoutadefinedLimit.3) charisfixed-längen, geeigneter ForconsistentDatalikeCodecodes.4) EnumforcesDataTaTaTableConSconsistentDatalikaScodes.4)

MySqloffersVariousStringDatatypes: 1) Charforfixed-Länge-Strings, 2) varcharforvariable-Lengthtext, 3) Binary und VarbinaryforBinaryData, 4) BloBandtextForLargedata und 5) Enumandforcontrolledinput

TOGRANTREMMENTIONSTONEWMYSQLUSERS, folgt der THESESTEPS: 1) AccessMysqlasauser withSuffePrivileges, 2) CreateeNewuserwiththecreateuserCommand, 3) UsetheGrantcommandtospecifificpermissionSlikesSelect, Einfügung, orallprivileSontespezifizierungen, und orallprivileSonegierungen, und orallprivileSonegierungen, und orallprivileSonegierungen, und 4), orallprivileSONSONSONSONSONSORTIONALS, und4) und 4), und 4), und 4)), und 4), orallprivileSoneger

Toaddusersinmysqleffektiv und secury, folge theSesteps: 1) UseTheCreatErStatementToaddanewuser, spezifizieren derHostandastrongPassword.2) GrantNeornyprivileGeSusingTheGrantstatement, AdheringTothprincipleastprivilege.3) implementssecurityMectoNityMeaSualslyLection

ToaddanewuserwithComplexPermissionssinmysql, folge theSeSteps: 1) CreateThEserWithCreatUser'newuser '@' localhost'IdentifiedBy'pa ssword ';. 2) GranTeadaccessToAlltablesin'myDatabase'withGrantSelectonMyDatabase.to'newuser'@'localhost';.

Die String -Datentypen in MySQL umfassen Zeichen, Varchar, Binär, Varbarin, Blob und Text. Die Kollationen bestimmen den Vergleich und die Sortierung von Saiten. 1.Ch ist für Zeichenfolgen mit fester Länge geeignet. Varchar ist für Zeichenfolgen variabler Länge geeignet. 2. Für Binärdaten werden immer wieder variäarisch verwendet, und Blob und Text werden für große Objektdaten verwendet. 3.. Sortierregeln wie UTF8MB4_unicode_ci ignoriert den oberen und unteren Fall und eignet sich für Benutzernamen. UTF8MB4_BIN ist fallempfindlich und für Felder geeignet, die einen genauen Vergleich erfordern.

Die beste Auswahl der MySQLVarchar -Spaltenlänge sollte auf der Datenanalyse basieren, zukünftiges Wachstum berücksichtigen, die Leistungsauswirkungen bewerten und die Anforderungen an den Charaktersatz bewerten. 1) Analyse der Daten, um typische Längen zu bestimmen; 2) zukünftige Expansionsraum reservieren; 3) Auf die Auswirkungen großer Länge auf die Leistung achten; 4) Betrachten Sie die Auswirkungen von Zeichensätzen auf die Speicherung. Durch diese Schritte können die Effizienz und Skalierbarkeit der Datenbank optimiert werden.


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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Dreamweaver Mac
Visuelle Webentwicklungstools

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

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