【问题标题】:enum('yes', 'no') vs tinyint -- which one to use?enum('yes', 'no') vs tinyint - 使用哪一个?
【发布时间】:2011-05-16 21:04:28
【问题描述】:

保存真/假值的字段的最佳做法是什么?

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

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

【问题讨论】:

  • 布尔值基本上是 tinyint(1)。

标签: mysql boolean tinyint


【解决方案1】:

避免从这个reasons枚举

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      BOOLEAN 类型的存在是有原因的。确实是TINYINT(1),但既然有,那一定是推荐的方式。

      【讨论】:

        猜你喜欢
        • 2015-11-24
        • 2012-10-18
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        • 2010-10-04
        • 2014-12-19
        • 2023-03-17
        • 2012-02-29
        相关资源
        最近更新 更多