enum («да», «нет») против tinyint - какой использовать? - PullRequest
17 голосов
/ 28 ноября 2010

Как лучше всего использовать поля, содержащие значения true / false?

Такие столбцы могут быть определены как enum ('yes', 'no') или как tinyint (1). Один лучше / быстрее другого?

Лучше ли использовать enum ('1', '0') против enum ('yes', 'no') (т. Е. Записывает ли 'yes' или 'no' как строку для каждой строки размер хранилища базы данных увеличивается)?

Ответы [ 3 ]

15 голосов
/ 28 ноября 2010

избегайте перечисления по этим причинам

Суть в том, что ENUM имеет свой место, но следует использовать экономно. Модель должна обеспечивать соблюдение ограничения, а не базы данных; модель должна обрабатывать интерпретацию необработанных данные в полезную информацию для вашего просмотров, а не базы данных.

12 голосов
/ 28 ноября 2010

BOOLEAN тип существует по причине.Это действительно TINYINT(1), но так как он есть, это должен быть рекомендуемый способ.

11 голосов
/ 28 ноября 2010

Кроме того, ENUM - это нестандартное расширение MySql.Вам следует избегать этого, особенно если вы можете достичь тех же результатов стандартным способом.

...