Задать вопрос
@ggagnidze

Какой тип поля лучше: SET или CHAR(1)?

Доброго дня.


В поле может храниться ограниченное количество значений (не больше 5, логика SET).

С точки зрения экономии памяти, что правильнее использовать:


SET('atype1', 'btype2', 'ctype3', 'dtype4')

или

CHAR (1) и использовать a, b, c, d?


Ответ объясните.

Спасибо.
  • Вопрос задан
  • 2755 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Sekira
@Sekira
SET лучше, так как хранится числом, а сопоставление чисел к названиям отдельно. А CHAR это текст.
Поиск по числам быстрее, поэтому SET.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
На всякий случай — SET и ENUM не путаете? Первый — битовая маска, допускает хранение множества флагов одновременно.
Поэтому, если вам нужна логика set — char вам не подходит (ну кроме того случая, что вы сами, почему-то на символьном поле, будете делать битовую маску).

И дополнительно поправлю Sekira:
mysql оперируют символами. Поэтому для utf8 char(1) будет занимать 3 байта, а varchar(5) — 2-17 байт.
Ответ написан
ivnik
@ivnik
Если я правильно понял задачу, то CHAR(1) вам совсем не подойдет.
В этом случае можно использовать VARCHAR(5), но несомненно SET лучше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы