Vergleichen von SQL-Sortierungen zu Windows-Sortierungen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 322112 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In Microsoft SQL Server 2000 und Microsoft SQL Server 2005 "Sortierung" gibt an, wie Zeichenfolgen verglichen und sortiert werden und welche Zeichen festgelegt wird für nicht-Unicode-Daten verwendet. SQL Server 2000 unterstützt zwei Arten von Sortierungen:
  • SQL-Sortierungen
  • Windows-Sortierungen
Eine Beschreibung der einzelnen Typen von Sortierung und eine gute Übersicht zum entscheiden, welche Sortierung verwenden finden Sie in der SQL Server 2000-Onlinedokumentation unter "Auswählen von Sortierungen", oder finden Sie unter "Typen" Sortierung"" in SQL Server 2005-Onlinedokumentation.

Dieser Artikel beschreibt weitere Überlegungen, die beeinflussen möglicherweise die Entscheidung, ob eine Windows Sortierung oder eine SQL-Sortierung auszuwählen, wenn Sie SQL Server 2000 oder SQL Server 2005 installieren.

Weitere Informationen

Sortierung Semantik

Für eine Windows Sortierung ist ein Vergleich von nicht-Unicode-Daten mithilfe des denselben Algorithmus als Unicode-Daten implementiert. Unicode- und nicht-Unicode-Sortierung sind kompatibel mit Vergleichsregeln Zeichenfolge in einer bestimmten Version von Windows. Dadurch wird Konsistenz über Datentypen in SQL Server. Darüber hinaus können Entwickler die CompareString Win32-API-Funktion zum Sortieren von Zeichenfolgen in Ihrer Anwendung mithilfe von die gleichen Regeln, die SQL Server verwendet verwenden.

In einer SQL-Sortierung definiert SQL Server unterschiedliche Vergleichssemantik für nicht-Unicode-Daten. SQL Server baut diese Vergleichssemantik auf eine SQL "Sortierreihenfolge". Finden Sie für eine Zuordnung der Sortierreihenfolgen, SQL-Sortierungen "SQL Collation Name" in der SQL Server-Onlinedokumentation.

Eine SQL-Sortierung Regeln für die Sortierung nicht-Unicode-Daten sind inkompatibel mit jeder sortieren-Routine, die vom Microsoft Windows Betriebssystem; die Sortierung von Unicode-Daten ist jedoch kompatibel mit der bestimmte Version des Windows-Sortierregeln. Da die Vergleichsregeln für nicht-Unicode und Unicode-Daten, unterschiedlich, sind Wenn Sie eine SQL-Sortierung verwenden möglicherweise unterschiedliche Ergebnisse für Vergleiche von gleichen Zeichen, je nach den zugrunde liegenden Datentyp angezeigt. Wenn Sie die SQL-Anweisung verwenden, z. B. Sortierung "SQL_Latin1_General_CP1_CI_AS", nicht-Unicodezeichenfolge 'a-c' ist kleiner als die Zeichenfolge "Ab", da der Bindestrich ("-") ist als separate Zeichen, die vor "b" sortiert. Wenn Sie diese Zeichenfolgen in Unicode konvertieren und den gleichen Vergleich durchführen, Unicode-Zeichenfolge N'a-c 'gilt jedoch nicht größer sein als N'ab' da die Unicode-Sortierung Regeln "Wort sortieren" verwenden, die den Bindestrich ignoriert.

Zeichenfolge vergleichen Leistung

Unicode-Sortierung Regeln sind wesentlich komplexer als die Regeln für eine nicht-Unicode-SQL-Sortierreihenfolge. Wenn SQL Server Unicode-Daten vergleicht, werden die Zeichen eine Gewichtung dynamisch geändert wird basierend auf der Sortierung Gebietsschema zugewiesen. Die Daten werden auch durch Vergleich Formatvorlage Einstellungen wie Breite, Kana-/ Kleinschreibung oder Akzent geändert. Die Unicode-Sortierreihenfolge Routinen unterstützt intelligentere sortieren Verhaltensweisen wie Wort zu sortieren.

Da die Routinen Unicode-Daten behandeln müssen, sind Sie außerdem flexibel, behandeln die Sortier- und der Vergleich von mehrere Tausend unterschiedliche Zeichen, anstelle der maximalen 255 Zeichen, die meisten SQL Server-Sortierreihenfolgen behandeln können. Aus diesen Gründen ist unformatierte Zeichenfolge Vergleich arbeiten, die Unicode-Sortierregeln verwendet normalerweise teurer hinsichtlich der Zeit und CPU-Zyklen als eine ähnliche Zeichenfolgenvergleich, der eine nicht-Unicode-SQL-Sortierreihenfolge verwendet.

Was dies für möglichen Kombinationen der Datentypen und Datentypen in SQL Server-Sortierung bedeutet:
  • Wenn Sie speichern und Ihre Daten mithilfe von nicht-Unicode-Datentypen ( Char , Varchar , Text ) behandeln, verwenden Sie eine SQL-Sortierung werden mit einer nicht-Unicode-SQL-Sortierreihenfolge Zeichenfolgenvergleiche durchgeführt werden.
  • Wenn Sie speichern und behandeln Sie Ihre Daten mithilfe von nicht-Unicode-Datentypen ( Char , Varchar , Text ) und eine Windows-Sortierung verwenden, werden Vergleiche von Zeichenfolgen mit Unicode-Sortierregeln durchgeführt. Dadurch kann bestimmte Vorgänge ungewöhnlich abhängig Zeichenfolge sortieren Leistung länger dauert und verwenden Sie weitere CPU als ein ähnlicher Vorgang, der ausgeführt wird mit einer SQL-Sortierung.
  • Wenn Sie Unicode-Datentypen ( Nchar , Nvarchar , Ntext ) verwenden, gibt es keinen Unterschied in das Sortierverhalten für die SQL- und Windows-Sortierungen. Beide werden Sortierregeln Unicode verwenden.
Im Allgemeinen wird der Grad der Leistungsunterschied zwischen Windows und SQL-Sortierungen erhebliche nicht. Die Differenz wird nur angezeigt, wenn eine Arbeitsauslastung ist CPU-gebundene, sondern durch den Overhead der Zeichenfolgenbearbeitung oder Vergleiche in SQL Server ausgeführt wird die eingeschränkt werden, indem e/A oder Geschwindigkeit im Netzwerk und die meisten dieser CPU-Belastung verursacht. Ein Beispiel für eine Anwendung, in denen der Leistungsunterschied ausgesprochen möglicherweise, ist ein System, wo eine Anwendung einen langen Zeichenfolgenwert an einer gespeicherten Prozedur von SQL Server übergeben. Die gespeicherte Prozedur analysiert dann die Zeichenfolge durch die umfangreiche Verwendung von Funktionen zur Zeichenfolgenbearbeitung wie CHARINDEX oder PATINDEX Transact-SQL. Wenn die Arbeitsauslastung ziemlich eindimensionale ist und es ist von Ausführungen dieser Zeichenfolge Analysieren der gespeicherten Prozedur dominiert, kann die Differenz in Leistung einer SQL-Sortierung und einer Windows-Sortierung erkennbar sein. Der Entwurf von den meisten Anwendungen ist jedoch nicht zu einer Situation führen, wo der Leistungsunterschied erhebliche ist.

Empfehlungen

  1. SQL-Sortierungen werden für Abwärtskompatibilität mit früheren Versionen von SQL Server bereitgestellt. Windows-Sortierungen bieten konsistente Zeichenfolgenvergleiche für beide Unicode und für nicht-Unicode-Text in SQL Server, die auch mit Zeichenfolgenvergleichen in der Windows-Betriebssystem konsistent sind. Aus diesen Gründen Windows-Sortierungen sind vorzuziehen, sofern keine Abwärtskompatibilitätsprobleme oder spezifischer Leistungsprobleme, die erfordern eine SQL-Sortierung.
  2. Wenn Sie eine SQL-Sortierung nur auf die Leistungsmerkmale einer SQL-Sortierung basierend erwägen, erkennen Sie, dass die Leistung von den meisten Anwendungen nicht wesentlich vom eine Änderung der Sortierung profitiert. Stellen Sie sicher, dass Sie Abfragen isoliert haben, die einen Vorteil aus einer SQL-Sortierung anzeigen. Sobald Sie die betroffenen Abfragen identifizieren, sollten Sie die folgenden alternativen einer Änderung in der Sortierung. Beide dieser alternativen bieten einen Leistungsvorteil ist größer als was Sie sehen werden wenn die Instanz-Sortierung in eine SQL-Sortierung ändern:
    1. Wenn der Aufwand für die Windows-Sortierungen von Transact-SQL-Routinen, die explizite Zeichenfolgenbearbeitung oder Analyse ausführen verfolgt wird, wenn Sie nicht-Unicode-Datentypen verwenden, können Sie eine SQL-Sortierung oder eine binäre Windows-Sortierung für die Operation, die häufig ausgeführt wird und die teuersten, angeben. Genommen Sie an, Sie die PATINDEX-Funktion verwenden, um festzustellen, ob eine Textspalte für in einer Tabelle das "X" Zeichen enthält. Sie erzwingen, eine SQL-Sortierung für diesen bestimmten Vergleichsvorgang, und Sie weiterhin mit einem Windows Sortierung für den Rest der Datenbank und die Anwendung Sie haben keinen um die Sortierung für das gesamte System zu ändern:
      SELECT PATINDEX ('%x%', MemoFld COLLATE SQL_Latin1_General_Cp1_CI_AS) FROM ...
    2. Wenn der Aufwand für die Windows-Sortierungen mehr profanen Abfragen, die keine Funktionen zur Zeichenfolgenbearbeitung komplexe verwenden verfolgt, würden verbesserte Index oder Entwürfe Verbesserungen ermöglichen könnte, die die dwarf Abfrage Sie anzeigen, indem auf eine SQL-Sortierung ändern. Eine Abfrage, die erfüllt werden kann durch stark selektive Suchvorgänge auf entsprechenden Indizes werden nicht empfindlich auf geringfügige Änderungen in Zeichenfolge Vergleich Kosten. Im Gegensatz dazu kann ein wenig Aufwand pro Zeichenfolgenvergleich schnell in einer Abfrage hinzufügen einrichten, die einen Tabellenscan ausführen und einen bestimmten Wert zu den einzelnen Millionen von Zeilen vergleichen müssen. Wenn Sie, große Tabelle verhindern oder Indexscans aus dem Abfrageplan, indem Sie die Indizierung oder die Abfrage selbst ändern, führt die Abfrage viel schneller, als wäre Sie eine SQL-Sortierung ändern.
Hinweis: Es ist eine dritte Art von Sortierung, die eine Variante einer SQL-Sortierung. Diese dritte Sortierung spricht man von "Kompatibilität Sortierung" oder ein "obsolescent Sortierung". Eine Sortierung Kompatibilität ist ein Satz von Sortier- und Vergleichsregeln Regeln, die nicht über einen vordefinierten Sortierungsnamen in SQL Server 2000 verfügen. Z. B. Wenn Sie SQL Server 7.0 mit einer Einstellung inkonsistenter Groß-und Kleinschreibung für Unicode und nicht-Unicode-Daten einrichten, müssen eine Sortierung Kompatibilität Sie bei der Aktualisierung dieser Instanz von SQL Server 7.0 auf SQL Server 2000. In der Diskussion weiter oben in diesem Artikel betrifft die Informationen zu SQL-Sortierungen auch Kompatibilität Sortierungen.

Weitere Informationen zu Kompatibilität Sortierungen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
270042Info: Beschreibung des SQL Server-Kompatibilität-Sortierungen

Eigenschaften

Artikel-ID: 322112 - Geändert am: Dienstag, 13. Dezember 2005 - Version: 8.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Keywords: 
kbmt kbhowto kbinfo KB322112 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 322112
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com