2015-11-12 3 views
0

Мы собираемся использовать таблицу для включения различных объектов, имеющих общее количество полей (например, «заказ», «счет-фактура», «оценка», «отправка», ...). По некоторым причинам мы решили, чтобы все они были в одной таблице, но это не вопрос.Tinyint vs varchar для определения типов объектов

В этой таблице будет специальное поле, которое будет содержать идентификатор объекта. В прошлом мы использовали varchars, как описано выше.

Было бы целесообразно использовать tinyint вместо этого, так что 0 означает «порядок», 1 означает «оценка» и т. Д.?

+0

На самом деле звучит как ENUM - это путь, если я правильно понимаю ваш вопрос. https://dev.mysql.com/doc/refman/5.7/en/enum.html –

+0

Я не уверен, следует ли мне использовать ENUM. Некоторые люди говорят, что избегайте ENUM и SET любой ценой. – user3514092

+0

используйте символ или крошечный int и сделайте его внешним ключом к новой таблице, где вы храните описание varchar: «заказ», «счет-фактура», «оценка», «отправка» ... –

ответ

1

В зависимости от вашей цели.

Для выполнения:

  1. TINYINT использует меньше места, так что было бы лучше, если вы хотите, чтобы сэкономить пространство
  2. запросов может стать быстрее

Для удобства чтения (Д.Б. пользователи с меньшим опытом)

Продолжить использование varchar

+0

Будет ли у них такая же производительность, если я добавлю это поле в качестве ИНДЕКСА? – user3514092

+0

Если вы просто выбираете значение, это не имеет значения. Но если вы используете его в таком состоянии, тогда производительность будет лучше с использованием int. – davejal

+0

Хорошо, спасибо! – user3514092

Смежные вопросы