Имеет ли значение выбранное собрание в этом случае?
Вопрос
У меня поле типа 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, которые могут возникнуть в любой момент, хотя в вашем примере они не на самом деле имеют значение.