#mysql #sqldatatypes
#mysql #sqldatatypes
Вопрос:
Бывают ли случаи, когда имеет смысл использовать текстовое поле (varchar, text и т. Д.) Вместо числового поля (int, float и т. Д.), Даже Если все сохраняемые данные являются числовыми?
Например, было бы лучше, быстрее или эффективнее хранить данные «5-значного почтового индекса» в поле varchar с 5 символами, а не в явно числовом поле?
Если да, как я могу определить, когда лучше всего использовать текстовое поле для числовых данных?
Я использую InnoDB, если это уместно.
РЕДАКТИРОВАТЬ: я использую почтовый индекс в качестве примера выше, но «в целом», когда следует выбирать текстовый тип данных вместо числового типа данных, когда все данные, которые будут сохранены, являются числовыми данными.
Ответ №1:
Зависит от того, как вы используете данные. Для почтовых индексов я бы использовал a VARCHAR
— просто потому, что он является частью адреса и не будет использовать его для вычислений. Также вы можете захотеть включить другие страны в будущем (в Великобритании у нас есть почтовые индексы, которые являются буквенно-цифровыми).
Комментарии:
1. Таким образом, поля, содержащие числовые данные, которые могут использоваться в вычислениях, должны оставаться числовыми, но те, которые будут отображаться только «отображаться», могут быть безопасно установлены в varchar . Есть ли какая-либо выгода в использовании varchar над числовым типом данных в этом случае? (Спасибо за совет и по британским адресам, это было очень важно.)
Ответ №2:
Ответ Ed в значительной степени охватывает все, как правило:
- не храните числовые значения в
varchar
столбцах — если только нет вероятности, что придется сохранять другие символы (примерами являются почтовые индексы и номера телефонов)
Когда вам нужны вычисления / сравнения сохраненных значений, всегда используйте числовые типы данных (при сравнении строк 2 больше 10)
Комментарии:
1. «при сравнении строк 2 больше 10» в значительной степени подводит итог. 🙂 Спасибо.