Стоит ли преобразовывать перечисления строк базы данных в целые числа?

Есть два способа сохранить типы перечислений в базе данных: в виде строки или в виде целого числа.

Сохранение перечисления ( sex = {мужской, женский} , account_type = {regular, pro, admin} и т. д.) в виде строк делает вещи лучше читается, но требует больше места, чем целые числа.

С другой стороны, целые числа требуют отображения перечислений в базе данных и из нее. В качестве преимущества чувствительность к регистру обрабатывается за пределами базы данных с помощью целых чисел.

Предполагая, что оба индексированы, стоит ли вообще выполнять целочисленное преобразование? Насколько быстрее выполняется поиск с помощью целых чисел?

Пример

Возможно, конкретный пример может помочь визуализировать вещи. Давайте возьмем указанный выше account_type с базой данных из 100 000 пользователей.

String enum

Предполагая, что 8-бит фиксированной длины Тип CHAR

7*100000*8/8 = 700000 bytes

Целочисленное перечисление

Принятие 8-битных целых чисел TINYINT

100000*8/8 = 400000 bytes

Похоже, что размер почти вдвое с целочисленными перечислениями. Также необходимо рассмотреть индексы.

6
задан randomguy 18 July 2011 в 11:35
поделиться