【问题标题】:what is best column type for status in MySQLMySQL中状态的最佳列类型是什么
【发布时间】:2014-10-24 04:53:47
【问题描述】:

我的状态字段可以获取一些值(不仅仅是两个),例如:待处理、活动、非活动、管理员不活动、已归档。

为了性能和可读性,我应该使用什么 mysql 字段类型?

我找到了两个解决方案。其中哪一个更好,为什么?(如果有其他解决方案,请告诉我):

1- 使用 tinyint 并在评论中提到每个数字的用途

2- 使用 varchar 并将状态直接放入其中

【问题讨论】:

  • 答案基本上取决于您将在哪里使用它以及您将如何使用它。这将是一个主要基于意见的问题。
  • 这也可以是一个枚举,一个状态表上的外键...
  • @R.T.什么解决方案适合什么情况?你能解释一下吗
  • @RaphaëlAlthaus 另一个表的状态,所以需要一个连接,没有性能问题?

标签: mysql sql database database-design relational-database


【解决方案1】:

我的看法是,如果您只是 selecting 的值,那么您将使用 varchar 还是 tinyint 都没有关系。

但如果你打算在某些情况下使用它,那么tinyint 将比varchar 更有优势。此外,建议尽可能选择最小的数据类型。

【讨论】:

  • @mohsenkw:- 那么 tinyint 会是更好的选择。因为您将获得使用它的性能优势。
  • @mohsenkw:- 只是为了您的理解,如果您要使用 tinyint(5) 那么它是一个从 0 到 255 的小整数,而 varchar(3) 有 3 个或更多字节。无论如何,varchar 需要更多空间。希望有帮助:)
【解决方案2】:

我建议您使用 ENUM。 您可以指定字段可以接受的值列表。

但是,您要经常更改要允许的值并拥有大量数据,使用 ENUM 会很痛苦。

【讨论】:

  • ENUM 不是用于状态字段的好数据类型。避免它。
猜你喜欢
  • 1970-01-01
  • 2014-08-12
  • 2010-12-28
  • 1970-01-01
  • 2023-03-24
  • 2015-07-02
  • 2017-01-03
  • 1970-01-01
  • 2015-04-28
相关资源
最近更新 更多