枚举('是','不')vs tinyint - 使用哪一个?

Yas*_*gul 17 mysql boolean tinyint

对于包含真/假值的字段,最佳做法是什么?

这些列可以定义为枚举('是','否')或tinyint(1).一个比另一个好/快吗?

使用enum('1','0')与enum('yes','no')是否更好(即,它是否将'yes'或'no'作为字符串写入每一行,以便数据库存储尺寸越来越大)?

Hai*_*vgi 15

从这个原因中避免枚举

底线是ENUM有它的位置,但应该谨慎使用.模型应该强制执行约束,而不是数据库; 模型应该处理将原始数据解释为您的视图的有用信息,而不是数据库.


Mic*_*l M 12

BOOLEAN类型是有原因的.它确实是一个TINYINT(1)但是因为它存在,它必须是推荐的方式.


Jon*_*Jon 11

此外,ENUM是一个非标准的MySql扩展.你应该避免使用它,特别是如果你能以标准方式获得相同的结果.