Mysql 我应该用ENUM还是TINYINT

Mysql 我应该用ENUM还是TINYINT,mysql,Mysql,我的表格包含一个字段“优先级”。现在我有以下优先考虑的是低”、“中”、“高”。< /强> 我感到困惑的是: 我应该为优先级值创建枚举类型字段吗 我应该创建一个TINYINT类型字段并将值存储为1、2、3吗 请注意,我需要根据此字段搜索和排序数据。 此外,此字段将有索引 如果您确定以后不会添加任何优先级,那么您应该使用ENUM,因为在这种情况下,您必须更改表。。。但是enum提供了一致数据的保证,没有插入其他值。您应该使用enum,正如您所说的,您必须搜索/排序,将它们设置为微小的整数将使您进行

我的表格包含一个字段“优先级”。现在我有以下优先考虑的是<强>低”、“中”、“高”。< /强>

我感到困惑的是:

  • 我应该为优先级值创建枚举类型字段吗
  • 我应该创建一个TINYINT类型字段并将值存储为1、2、3吗
  • 请注意,我需要根据此字段搜索和排序数据。
    此外,此字段将有索引

    如果您确定以后不会添加任何优先级,那么您应该使用ENUM,因为在这种情况下,您必须更改表。。。但是enum提供了一致数据的保证,没有插入其他值。

    您应该使用enum,正如您所说的,您必须搜索/排序,将它们设置为微小的整数将使您进行额外的处理,如将1,2,3转换回“低”、“中”、“高”。在显示时


    Enum非常适合这种情况

    Enum是一个非标准的MySql扩展。你应该避免它,尤其是如果你能以标准的方式达到同样的结果。因此最好使用tinyint

    附加处理并不是什么大问题,因为我将使用js在客户端转换它们。我关心的是表中存储的数据量。此表每秒将获得100个新条目,因此使用TINYINT并减少表中存储的数据量是否更明智?
    ENUM
    类型仅在表定义中存储字符数据,值在实际记录中实际存储为1或2字节整数,因此,存储需求与您的场景无关:正确的枚举类型仅在表定义中存储字符数据