Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   MySQL: ENUM или SET (https://javascript.ru/forum/server/22909-mysql-enum-ili-set.html)

greatilya 05.11.2011 10:55

MySQL: ENUM или SET
 
Что использовать для множества из 41 элемента, ENUM или SET?

Цитирую небольшой кусок с описанием типов:
Цитата:

Размер объекта ENUM определяется количеством различных перечисляемых величин. Один байт используется для перечисления до 255 возможных величин. Используя два байта, можно перечислить до 65535 величин.
Размер объекта SET определяется количеством различных элементов множества. Если это количество равно N, то размер объекта вычисляется по формуле (N+7)/8 и полученное число округляется до 1, 2, 3, 4 или 8 байтов. Множество SET может иметь максимум 64 элемента.
Мне подходит как первый так и второй тип. Казалось бы SET оптимальнее подходит по количеству, но зато он занимает 8 байт в памяти. ENUM же при 41 элементе занимает 1 байт.

Как понимаю логичнее использовать ENUM, или я что-то не учел?

Gvozd 05.11.2011 14:27

я вот даже не знаю.
это ведь совсем разные типы данных.
Цитата:

ENUM (перечисление) - это столбец, который может принимать значение из списка допустимых значений, явно перечисленных в спецификации столбца в момент создания таблицы.
То есть вы задаете список допустимых значений, и в конкретной строке вы можете указать одно единственное значение из определенного ранее списка
Цитата:

SET - это строковый тип, который может принимать ноль или более значений, каждое из которых должно быть выбрано из списка допустимых значений, определенных при создании таблицы. Элементы множества SET разделяются запятыми. Как следствие, сами элементы множества не могут содержать запятых.
Иными словами, вы задаете список допустимых значений, и в конкретной строке вы можете указать любую комбинацию из этих элементов. Например указать 3 из ваших 41-го элементов.

Выбирать тип поля надо в соответсвии с тем, что вы там собираетесь хранить.
Если вам подходят оба типа, то видимо вам нужно хранить только одно значение из списка.
Значит нужно использовать ENUM

greatilya 06.11.2011 05:32

Gvozd,
Да спасибо, я вот это собственно сразу то и не понял, что SET позволяет указать несколько значений. Теперь буду знать. Конечно мне подходит более ENUM.
Спасибо.


Часовой пояс GMT +3, время: 09:56.