MySQL Enum性能优势?
在一个领域只有5-10个不同的可能值的情况下使用枚举是否有性能优势? 如果没有什么优势?
将ENUM
用于以下操作会有巨大的性能损失 :
-
查询
ENUM
中的允许值列表,例如填充下拉菜单。 您必须从INFORMATION_SCHEMA
查询数据types,并将列表parsing出返回的BLOB字段。 -
改变允许值的集合。 它需要一个
ALTER TABLE
语句,该语句locking表并可以进行重构。
我不是MySQL的ENUM
的粉丝。 我更喜欢使用查找表。 另请参阅我对“ 如何处理数据库中枚举字段而不处理枚举 ”的回答。
ENUM由1或2个字节内部表示,具体取决于值的数量。 如果你存储的string大于2个字节,很less改变,那么ENUM就是要走的路。 枚举的比较会更快,并且占用磁盘空间更less,从而导致更快的查找时间。
缺点是枚举在添加/删除值时不够灵活。
结果是,从devise的angular度来看,虽然使用ENUM可能看起来不太优雅(如果ENUM值有时会发生变化),对于大型数据集,性能增益是显而易见的。 详情请看他的文章。 你同意吗?
不, 在这里看比较
优点在于代码可读性。