2009-04-28 10 views
8

Gemäß der sqlite3 documentation,Was bewirkt das COLLATE-Schlüsselwort beim Erstellen eines SQLite-Indexes?

die Sortiersatz nach jedem Spaltennamen definiert eine Kollationieren Sequenz in diesem Spalte für Texteinträge verwendet. Die Standard-Sortierfolge ist die Sortierfolge, die für diese Spalte in der Anweisung CREATE TABLE definiert ist. Wenn keine Sortierreihenfolge anderweitig definiert ist, wird die integrierte BINARY-Sortierreihenfolge verwendet.

Was macht eine Sortierfolge und was ist eine BINARY-Sortierreihenfolge?

Antwort

5

Es ist die Art und Weise, wie die SQL Engine Daten intern bestellt. Binary Collation macht das, was es vorschlägt, es macht einen binären Vergleich. Im Allgemeinen ist es die schnellste Kollatierung, obwohl ich es nie quantifiziert habe, da es Bitmuster überprüft, was bedeutet, dass es case- und akzentunempfindlich ist.

1

Die binäre Sortierung vergleicht Ihre Zeichenfolge Byte für Byte, wie in einer Unicode-Tabelle. Zum Beispiel: A, B, a, b. Eine Groß- und Kleinschreibung Reihenfolge wäre: a, A, b, B.

Der Vorteil der binären Sortierung ist ihre Geschwindigkeit, da der Stringvergleich sehr einfach/schnell ist. Im Allgemeinen führen Indizes mit Binärcode möglicherweise nicht zu erwarteten Ergebnissen für die Sortierung, für genaue Übereinstimmungen können sie jedoch nützlich sein.

COLLATE NOCASE wirkt sich auch auf Groß- und Kleinschreibung aus.

Wenn Sie eine Spalte mit diesen Werten: ‚aa‘, ‚aA‘

select * from table where col = 'aa' 

Wenn Sie Ihre Spalte mit COLLATE NOCASE erstellt haben, wird es sowohl zurückkehren ‚aa‘ und ‚aA‘. Andernfalls, wenn Sie es nicht angeben, gibt es nur 'aa' zurück.

Sie können auch in einer Abfrage angeben (diese langsamer ist dann, wenn Sie Ihre Spalte mit COLLATE NOCASE erstellt hatte)

select * from table where col = 'aa' COLLATE NOCASE 
Verwandte Themen