【问题标题】:MySQL data types: int versus enumMySQL 数据类型:int 与 enum
【发布时间】:2010-10-30 08:42:37
【问题描述】:

我有许多列,只需要存储几个值(例如 0、1、2、3)。对于这种情况,我应该选择什么数据类型?我觉得我应该选择像 ENUM('0', '1', '2') 这样的东西。 int 会更好(尽管限制较少)?我应该考虑其他东西(比如 tinyint)吗?

编辑:

实际上,在决定数据类型时我应该考虑哪些一般性建议?

【问题讨论】:

  • 一般建议?总是选对的:)
  • 你是说右边那个? :P

标签: sql mysql database database-design


【解决方案1】:

如果您想将其限制为这 3 个值,那么 ENUM 确实可能是最好的。

但是,如果将来可能需要更多值,那么 TINYINT UNSIGNED 可能是更好的解决方案。

【讨论】:

  • 是的。即使有数百万条记录,在 INT/TINYINT 上使用 ENUM 所节省的数据量也是微不足道的。通常,最好使用后者
  • 为什么 ENUM 比 int 或 tinyint 更好?是因为可以存储的数据的限制(即更好的数据完整性)吗?它与存储要求有什么关系吗?还是速度?还是别的什么?
  • 枚举值存储为索引,需要 2 个字节(smallint 无符号),因此您最多可以有 65,535 个枚举元素。
  • 是的,这里 ENUM 的主要优点是限制了允许值的集合(因为我们在 MySQL 中还没有列约束)。在性能方面,TINYINT 可能会更快。
【解决方案2】:

建议使用带有固定集合的枚举。如果您想扩展,那么基本上应该避免“更改”架构更改。

找到关于choosing datatype的更好的想法

并获取带有数据类型的comparison of enum

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多