2009-04-28 10 views
8

Według sqlite3 documentation,Co robi słowo kluczowe COLLATE podczas tworzenia indeksu sqlite?

Klauzula UKŁADAJ po każdej nazwa kolumny definiuje zestawiania sekwencję używany do wyboru tekstu w tej kolumnie . Domyślna kolejność zestawiania jest sekwencją zestawiania zdefiniowaną dla tej kolumny w instrukcji CREATE TABLE . Lub jeśli nie zdefiniowano inaczej kolejności zestawiania , używana jest wbudowana sekwencja zestawiania BINARY BINARY.

Co robi sekwencja zestawiania i jaka jest BINARNA sekwencja zestawiania?

Odpowiedz

5

Jest to sposób, w jaki silnik sql zamawia dane wewnętrznie. Sortowanie binarne robi to, co sugeruje, robi binarne porównanie. Zasadniczo jest to najszybszy sposób sortowania, chociaż nigdy go nie obliczałem, ponieważ sprawdza wzorce bitowe, co oznacza, że ​​jest niewrażliwy na wielkość liter i akcentów.

1

Sortowanie binarne porównuje bajt ciągu bajtów, tak jak w tabeli unicode. Na przykład: A, B, a, b. Kolejność rozróżniania wielkości liter to: a, A, b, B.

Zaletą sortowania binarnego jest jego szybkość, ponieważ porównywanie ciągów jest bardzo proste/szybkie. W ogólnym przypadku indeksy binarne mogą nie dawać oczekiwanych wyników sortowania, jednak w przypadku dopasowań ścisłych mogą być przydatne.

Funkcja COLLATE NOCASE wpływa również na wielkość liter.

Jeśli masz kolumnę z tych wartości: „AA”, „AA”

select * from table where col = 'aa' 

Jeśli utworzeniu kolumny COLLATE NOCASE zwróci zarówno „AA” i „AA”. W przeciwnym razie, jeśli tego nie określisz, zwróci tylko "aa".

Można również określić ją w zapytaniu (jest wolniejsza a następnie, jeśli stworzył swoją kolumnę COLLATE NOCASE)

select * from table where col = 'aa' COLLATE NOCASE 
Powiązane problemy