包含真/假值的字段的最佳做法是什么?
这些列可以定义为enum('yes','no')或tinyint(1)。是一个比另一个更好/更快?
使用enum('1','0')与enum('yes','no')相比是否更好(即,它是否将'yes'或'no'作为字符串写入每一行,所以数据库存储大小变大了吗?
答案 0 :(得分:15)
避免使用此reasons
的枚举底线是ENUM有它的 地方,但应谨慎使用。 该模型应该强制执行 约束,而不是数据库;该 模型应该处理解释原始 将数据转化为有用的信息 视图,而不是数据库。
答案 1 :(得分:12)
BOOLEAN
类型是有原因的。它确实是TINYINT(1)
但是因为它在那里,它必须是推荐的方式。
答案 2 :(得分:11)
此外,ENUM
是非标准的MySql扩展。你应该避免使用它,特别是如果你能以标准的方式获得相同的结果。