Что делает ключевое слово COLLATE при создании индекса sqlite?

StackOverflow https://stackoverflow.com/questions/799840

  •  18-09-2019
  •  | 
  •  

Вопрос

Согласно документация sqlite3,

Предложение COLLATE, следующее за каждым именем столбца, определяет последовательность сбора, используемая для текстовых записей в этом столбце.Последовательность сопоставления по умолчанию - это последовательность сбора, определенную для этого столбца в операторе Create Table.Или, если не определено никакой последовательности сопоставления, используется встроенная бинарная последовательность сбора.

Что делает последовательность сортировки и что такое БИНАРНАЯ последовательность сортировки?

Это было полезно?

Решение

Это способ внутреннего упорядочивания данных движком sql.Двоичная сортировка делает то, что предлагает: выполняет двоичное сравнение.Как правило, это самая быстрая сортировка, хотя я никогда не оценивал ее количественно, поскольку она проверяет битовые комбинации, а это означает, что она нечувствительна к регистру и диакритическим знакам.

Другие советы

Двоичная сортировка сравнивает строку побайтово, как в таблице Юникода.Например:А, Б, а, б.Порядок с учетом регистра будет выглядеть следующим образом:а, А, б, Б.

Преимуществом двоичной сортировки является ее скорость, поскольку сравнение строк происходит очень просто и быстро.В общем случае двоичные индексы могут не давать ожидаемых результатов для сортировки, однако для точных совпадений они могут быть полезны.

COLLATE NOCASE также влияет на запросы, чувствительные к регистру.

Если у вас есть столбец с этими значениями:'аа', 'аА'

select * from table where col = 'aa'

Если вы создали столбец с помощью COLLATE NOCASE, он вернет как «aa», так и «aA».В противном случае, если вы этого не указали, будет возвращено только «аа».

Вы также можете указать его в запросе (это медленнее, чем если бы вы создали столбец с помощью COLLATE NOCASE).

select * from table where col = 'aa' COLLATE NOCASE
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top