【发布时间】:2011-05-16 21:04:28
【问题描述】:
保存真/假值的字段的最佳做法是什么?
这样的列可以定义为 enum('yes','no') 或 tinyint(1)。一个比另一个更好/更快吗?
使用 enum('1','0') 与 enum('yes','no') 更好吗(即,它是否将 'yes' 或 'no' 作为字符串写入每一行,所以数据库存储大小变大了)?
【问题讨论】:
-
布尔值基本上是 tinyint(1)。
保存真/假值的字段的最佳做法是什么?
这样的列可以定义为 enum('yes','no') 或 tinyint(1)。一个比另一个更好/更快吗?
使用 enum('1','0') 与 enum('yes','no') 更好吗(即,它是否将 'yes' 或 'no' 作为字符串写入每一行,所以数据库存储大小变大了)?
【问题讨论】:
避免从这个reasons枚举
底线是 ENUM 有它的 地方,但应谨慎使用。 该模型应强制执行 约束,而不是数据库;这 模型应该处理原始的解释 数据转化为对您有用的信息 视图,而不是数据库。
【讨论】:
另外,ENUM 是一个非标准的 MySql 扩展。你应该避免它,特别是如果你能以标准的方式获得相同的结果。
【讨论】:
BOOLEAN 类型的存在是有原因的。确实是TINYINT(1),但既然有,那一定是推荐的方式。
【讨论】: