MySQL Enum性能优势?

在一个领域只有5-10个不同的可能值的情况下使用枚举是否有性能优势? 如果没有什么优势?

ENUM用于以下操作会有巨大的性能损失

  • 查询ENUM中的允许值列表,例如填充下拉菜单。 您必须从INFORMATION_SCHEMA查询数据types,并将列表parsing出返回的BLOB字段。

  • 改变允许值的集合。 它需要一个ALTER TABLE语句,该语句locking表并可以进行重构。

我不是MySQL的ENUM的粉丝。 我更喜欢使用查找表。 另请参阅我对“ 如何处理数据库中枚举字段而不处理枚举 ”的回答。

ENUM由1或2个字节内部表示,具体取决于值的数量。 如果你存储的string大于2个字节,很less改变,那么ENUM就是要走的路。 枚举的比较会更快,并且占用磁盘空间更less,从而导致更快的查找时间。

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

在这篇文章中http://fernandoipar.com/2009/03/09/using-the-enum-data-type-to-increase-performance/费尔南多调查查询Enumtypes的performance。;

结果是,从devise的angular度来看,虽然使用ENUM可能看起来不太优雅(如果ENUM值有时会发生变化),对于大型数据集,性能增益是显而易见的。 详情请看他的文章。 你同意吗?

不, 在这里看比较

优点在于代码可读性。