enum(' active',' inactive')vs enum(0,1)

时间:2014-08-14 09:08:24

标签: mysql enums

我想在db中存储用户的状态。状态列为enum('active','inactive')enum(0,1)

我永远不会允许非活动用户使用我的应用程序。无需在此处进行联接或显示活动和非活动用户。 简而言之,无需在任何地方显示用户的状态,只需使用它们。 我可以将它存储为enum(0,1)但我只是想知道是否有任何优化问题,如果我选择使用enum('active','inactive') enum('active','inactive')在mysql内部映射,但我仍然很想知道是否字符串可以有所作为。

1 个答案:

答案 0 :(得分:2)

  1. enum是一个内部映射到整数的字符串对象。它将是1或2个字节,具体取决于枚举值的数量。在这里,你只有活跃的'或者'不活跃'。所以,没有空间问题

  2. 不同ENUM成员的
  3. 获取列表会很痛苦。

    例如:如果您已经在表格中维护,则无法通过从角色中选择*来动态生成状态下拉列表

  4. 更改 ENUM的会员列表昂贵

    ALTER TABLE ENUM('active','inactive')ENUM('active','disabled') MySQL需要重建您的表并查看每个记录以检查现在无效的值'不活动'并且会对数百万条记录造成不利影响

  5. 当您使用枚举时,您必须注意您不能再向角色添加任何属性或相关信息