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

18
如何处理存储真/假值的字段是最佳实践?
这样的列可以定义为enum('yes','no')或tinyint(1)。一个比另一个更好/更快吗?
使用enum('1','0')而不是enum('yes','no')是否更好(即是否将'yes'或'no'作为字符串写入每一行,从而使数据库存储大小变大)?

3
布尔类型基本上是一个tinyint(1)。 - kapa
3个回答

15

避免使用ENUM的原因

总而言之,ENUM有其应用场景,但应该谨慎使用。模型应该强制执行约束条件,而不是数据库;模型应该处理将原始数据解释为视图中有用信息,而不是数据库。


12

BOOLEAN类型是有其存在的意义的。虽然它实际上是一个TINYINT(1),但既然已经存在,那么使用它是推荐的方法。


11

此外,ENUM是一个非标准的 MySql 扩展。你应该避免使用它,特别是在可以用标准方法获得相同结果时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接