Подтвердить что ты не робот

Преимущества MySQL Enum?

Существует ли преимущество производительности при использовании перечисления в ситуациях, когда для поля имеется всего 5-10 различных возможных значений? если не в чем преимущество?

4b9b3361

Ответ 1

Существует огромное ограничение производительности при использовании ENUM для таких операций, как:

  • Запросить список допустимых значений в ENUM, например, для заполнения раскрывающегося меню. Вы должны запросить тип данных из INFORMATION_SCHEMA и проанализировать список из возвращаемого BLOB-поля.

  • Измените набор допустимых значений. Для этого требуется оператор ALTER TABLE, который блокирует таблицу и может выполнять реструктуризацию.

Я не поклонник MySQL ENUM. Я предпочитаю использовать таблицы поиска. См. Также мой ответ на "Как обрабатывать перечисления без полей перечисления в базе данных?"

Ответ 2

ENUM представлены внутренне 1 или 2 байта в зависимости от количества значений. Если строки, которые вы храните, больше 2 байтов и редко меняются, то ENUM - это путь. Сравнение будет быстрее с перечислением, и они занимают меньше места на диске, что, в свою очередь, может привести к более быстрому времени поиска.

Недостатком является то, что перечисления менее гибкие, когда дело доходит до добавления/удаления значений.

Ответ 3

В этой статье http://fernandoipar.com/2009/03/09/using-the-enum-data-type-to-increase-performance/ Фернандо смотрит на характеристики типа Enum для запросов.

Результат состоит в том, что при использовании ENUM может показаться немного менее элегантным с точки зрения дизайна (если иногда меняется значение ENUM), коэффициент усиления производительности очевиден для больших наборов данных. Подробности см. В его статье. Вы согласны?

Ответ 4

Нет, см. сравнение здесь

Преимущество лежит в читаемости кода.