Имеет ли значение выбранное собрание в этом случае?

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

  •  27-10-2019
  •  | 
  •  

Вопрос

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

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

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top