Существует два способа хранения типов перечислений в базе данных: в виде строки или целого числа.
Сохранение перечисления (sex = {male,female}
, account_type = {regular,pro,admin}
и т. Д.) В виде строк делает вещи более читабельными, но требует больше места, чем целые числа.
С другой стороны, целые числа требуют отображения перечислений в и из базы данных. В качестве преимущества чувствительность к регистру обрабатывается за пределами базы данных целыми числами.
Предполагая, что оба индекса проиндексированы, стоит ли делать целочисленное преобразование в целом? Насколько быстрее поиск с целыми числами?
Пример
Возможно, конкретный пример мог бы помочь визуализировать вещи.
Давайте возьмем вышеуказанный account_type с базой данных из 100 000 пользователей.
Строковое перечисление
Предполагая 8-битный тип CHAR фиксированной длины
7*100000*8/8 = 700000 bytes
Целочисленное перечисление
Предполагая 8-битные целые числа TINYINT
100000*8/8 = 400000 bytes
Кажется, что размер почти наполовину с целыми числами. Также нужно учитывать индексы.