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

时间:2010-11-28 14:14:33

标签: mysql boolean tinyint

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

这些列可以定义为enum('yes','no')或tinyint(1)。是一个比另一个更好/更快?

使用enum('1','0')与enum('yes','no')相比是否更好(即,它是否将'yes'或'no'作为字符串写入每一行,所以数据库存储大小变大了吗?

3 个答案:

答案 0 :(得分:15)

避免使用此reasons

的枚举
  

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

答案 1 :(得分:12)

BOOLEAN类型是有原因的。它确实是TINYINT(1)但是因为它在那里,它必须是推荐的方式。

答案 2 :(得分:11)

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