#php #mysql #database #collation
#php #mysql #База данных #сортировка
Вопрос:
У меня есть таблица, например:
create table T1(Id int primary key auto_increment, Value text)
Value
используется для хранения «текстовых» данных, но строки никогда не сортируются по Value
столбцу.
Для какой сортировки следует предпочесть Value
?
Что было бы utf8mb4_bin
лучшим выбором или utf8mb4_general_ci
?
Ответ №1:
Это выглядит нормально. Я, конечно, не стал бы использовать сопоставление без учета регистра, если бы оно не было необходимо (в соответствии с вашим случаем), поскольку это может привести к замедлению запросов (хотя я сомневаюсь, что оно все равно будет использоваться для нетекстовых полей).
Однако вы должны иметь в виду, что сортировка предназначена не только для сортировки, но и для выбора (например, where
предложение). Если вы собираетесь извлекать строки только на основе столбцов, отличных от Value
, это не должно иметь значения.
В любом случае, я на самом деле не большой поклонник сортировки без учета регистра, выполняемой самой базой данных, поскольку я бы предпочел, чтобы база данных работала как можно быстрее и использовала свои собственные методы для решения проблем с регистрами (например, дополнительный индексированный столбец, содержащий фамилии в нижнем регистре,и обновляется с помощью триггеров вставки / обновления для поддержания согласованности с остальной частью строки).
В принципе, я луддит 🙂 но никто никогда не жалуется на то, насколько велики их базы данных, только на то, насколько медленно.
Комментарии:
1. Когда вы говорите, что вы луддит, вы имеете в виду, что в старые времена именно так это делалось? Даже на уровне отраслевого стандарта?