代码之家  ›  专栏  ›  技术社区  ›  gsueagle2008

mysql枚举性能优势?

  •  48
  • gsueagle2008  · 技术社区  · 15 年前

    在一个字段只有5-10个不同的可能值的情况下使用enum是否有性能优势?如果不是,优势是什么?

    4 回复  |  直到 8 年前
        1
  •  43
  •   Community Mr_and_Mrs_D    7 年前

    有一场盛大的演出 处罚 使用 ENUM 对于以下操作:

    • 在中查询允许值的列表 枚举 ,例如填充下拉菜单。您必须从 INFORMATION_SCHEMA ,并从返回的blob字段中分析列表。

    • 更改允许的值集。它需要一个 ALTER TABLE 语句,该语句锁定表并可能执行重新构造。

    我不是mysql的粉丝 枚举 . 我更喜欢使用查找表。另见我的回答 How to handle enumerations without enum fields in a database?

        2
  •  24
  •   John Douthat    8 年前

    枚举在内部由1或2个字节表示,具体取决于值的数量。如果要存储的字符串大于2字节且很少更改,则可以使用枚举。使用枚举进行比较会更快,而且它们占用的磁盘空间更少,这反过来会导致更快的查找时间。

    缺点是枚举在添加/删除值时不太灵活。

        3
  •  10
  •   Guillaume Gendre    12 年前

    在本文中 http://fernandoipar.com/2009/03/09/using-the-enum-data-type-to-increase-performance/ 费尔南多研究枚举类型的查询性能。

    结果是,虽然从设计的角度来看,使用enum似乎不那么优雅(如果您的enum值有时在变化),但是对于大型数据集来说,性能的提高是显而易见的。 详情见他的文章。你同意吗?

        4
  •  1
  •   Paul Grigoruta    15 年前

    不,看比较 here

    优点在于代码的可读性。