TINYINT или SET?

В MySQL часто использую поля которые имеют только несколько значений. Например 0,1,2,3…
Какой тип лучше использовать, TINYINT или SET? И почему?
Эти же поля в основном делаю ключами…
  • Вопрос задан
  • 6438 просмотров
Пригласить эксперта
Ответы на вопрос 3
Melkij
@Melkij
PostgreSQL DBA
Помним/знаем о том, что set — битовая маска, может одновременно хранить несколько значений?
Эквивалент для tinyint — enum. (ну или set, но тогда с реализацией битовой маски, иначе зачем было set'ом делать?)

Если значение в 1 момент времени может быть только одно — enum.
Если несколько — set.
Просто потому, что текстовое представление легче воспринимается, чем числовое.

Все трое на идентичных диапазонах данных занимают равное место. dev.mysql.com/doc/refman/5.1/en/storage-requirements.html
Ответ написан
Комментировать
taliban
@taliban
php программист
А это смотря где используете. По сути оба маленькие, оба будут занимать мало места, но лично для меня разница очевидна:
SELECT * FROM `cars` WHERE type = 4
и
SELECT * FROM `cars` WHERE type = 'hatchback'
Эти запросы одинаковы, но говорят об одном существенном преимуществе set (он же enum)
Ответ написан
EugeneOZ
@EugeneOZ
TINYINT. По советам из этой книжки: www.amazon.com/High-Performance-MySQL-Optimization-Replication/dp/0596101716
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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