Каков наилучший способ хранения значений ENUM в базе данных MySQL? [Дубликат]

В веб-приложении каждая задача выполняется в виде запроса и ответа.

Программирование на стороне клиента - это HTML-код с Java-скриптом и его фреймворками, библиотеки выполняются в Internet Explorer, Mozilla, Chrome-браузерах. В сценарии Java-сценария серверные сервлеты программирования выполняются в Tomcat, web-логике, j боссе, WebSphere severs

16
задан Greg 3 November 2008 в 19:43
поделиться

3 ответа

Он преобразует их в целые числа на INSERT / UPDATE и обратно в строки на SELECT, поэтому внутреннее хранилище является целым числом, но вы не подвергаетесь этому.

Вы можете получить целое число, например SELECT mycolumn + 0.

См. ENUM в MySQL 5

22
ответ дан Greg 27 August 2018 в 02:34
поделиться

Во-первых, я не стал бы беспокоиться о потреблении пространства при принятии решения о том, следует ли использовать перечисление. Дисковое пространство изобилует и дешево.

Во-вторых, он хранит строки в определении столбца, а затем сохраняет соответствующее перечисление в каждой записи. Согласно этому значение, сохраненное в каждой записи, представляет собой числовое представление позиции значений в перечислении.

2
ответ дан Noah Goodrich 27 August 2018 в 02:34
поделиться
  • 1
    Это не просто пространство, но и скорость. Получить меньшую строку быстрее, и я предпочел бы СОХРАНИТЬ на перечислении, кроме строки. – Greg 3 November 2008 в 19:50
  • 2
    noah, если только это не посредственное заявление, иначе я полностью не согласен с вашим первым абзацем – Pacerier 6 July 2011 в 04:12
  • 3
    Не быть грубым, но – William 13 May 2012 в 23:37

Как пояснялось здесь здесь , перечисления сохраняются как значения между 0 (нет действительного набора значений) и 65535, которые связаны с индексом перечисления. Значение, которое хранится в таблице, представляет собой 2 байтовое значение, а не строку.

2
ответ дан Robert Gamble 27 August 2018 в 02:34
поделиться
  • 1
    Я должен добавить, что если число перечислений 255 или меньше, используется только 1 байт (аналогично TINYINT). (ref: mysql5 docs) – Sina 14 December 2013 в 17:36
Другие вопросы по тегам:

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