Имеет ли значение выбранная сортировка в этом случае? - PullRequest
1 голос
/ 14 июня 2011

В моей таблице MySQL есть поле типа char(1), которое в принципе может иметь только значения m или f. Текущее сопоставление установлено в ut8_unicode_ci. Я думал о том, стоит ли мне менять сопоставление на что-то более простое, например на латиницу, потому что никогда не используется полный набор символов utf8 - только символы m или f. Это что-то изменит?

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

Я сомневаюсь, что это будет иметь какое-либо измеримое значение, но если m и f являются единственно возможными значениями, то utf8_bin должно дать точно те же результаты, что и utf8_unicode_ci (или большинство других алгоритмов сопоставления в этом отношении). И поскольку это сравнение выполняет простое двоичное сравнение, оно должно быть самым быстрым из всех.

2 голосов
/ 14 июня 2011

Сортировка - это правило, которое определяет, как символы должны быть упорядочены.Представьте себе алфавитную последовательность - A - первая буква, а Z - последняя буква (на английском языке).Сортировка - это правило, которое говорит, что A является первым, а Z - последним, а также помогает определить, как сравниваются символы.Короче говоря, в вашем случае сортировка не имеет ничего общего.

Что вам нужно сделать, это установить для этого поля значение tinyint, пока MySQL не появится с логическими типами позже.Таким образом вы обойдете любые проблемы с кодировкой, которые могут возникнуть в любой момент, хотя в вашем примере они не имеют значения.

...