Я просматривал дампы SQL некоторых известных CMS, включая Drupal 7, Wordpress (довольно старая версия) и некоторые пользовательские приложения, основанные на Python.
Все эти дампы содержали данные со строковыми флагами вместо целочисленных. Например, статус на должность был представлен как published
, closed
или inherit
вместо 1
, 2
или 3
.
У меня довольно ограниченный опыт проектирования баз данных, и я никогда не проходил мимо простых SQL, но меня всегда учили, что я должен использовать числовые / целочисленные флаги для таких данных. Очевидно, что она занимает tinyint
гораздо меньше места в базе данных, чем, например varchar(9)
,.
Так чего мне не хватает? Разве это не пустая трата данных и избыточность данных? Разве просмотр, поиск и индексирование не были бы немного быстрее, если бы в этих столбцах использовались целые числа вместо строк?
char
s? Как неэффективно!» устарел по сравнению с 2015 годом.