首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL枚举性能优势?

MySQL枚举性能优势?
EN

Stack Overflow用户
提问于 2009-04-19 22:52:05
回答 4查看 28.2K关注 0票数 57

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-19 23:14:18

使用ENUM执行以下操作会带来巨大的性能损失:

  • 查询ENUM中的允许值列表,例如填充下拉菜单。您必须从INFORMATION_SCHEMA查询数据类型,并从BLOB字段中解析出一组允许值的列表。它需要一条ALTER TABLE语句,该语句将锁定表并可能执行重新构造。

我不是MySQL的ENUM的粉丝。我更喜欢使用查找表。另请参阅我对"How to handle enumerations without enum fields in a database?“的回答

票数 53
EN

Stack Overflow用户

发布于 2009-04-19 22:58:31

ENUM在内部由1个或2个字节表示,具体取决于值的数量。如果您存储的字符串大于2个字节,并且很少更改,那么ENUM就是一种选择。使用枚举进行比较会更快,并且它们占用的磁盘空间更少,这反过来可以导致更快的寻道时间。

缺点是,当涉及到添加/删除值时,枚举的灵活性较差。

票数 27
EN

Stack Overflow用户

发布于 2012-10-25 20:26:31

在本文中,Using the ENUM data type to increase performance Fernando研究了枚举类型查询的性能。

结果是,虽然从设计的角度来看,使用ENUM似乎不那么优雅(如果您的ENUM值有时会发生变化),但对于大型数据集,性能提升是显而易见的。

很明显,从设计的角度来看,使用

似乎不那么优雅(如果我在多个表中使用类型会发生什么?如果我想添加一个类型怎么办?我必须修改这个表!),如果我要处理大量数据(我的测试是用少量的数据,但我没有服务器,只有一个非常简陋的笔记本),那么性能上的好处可能是值得的。

有关详细信息,请参阅他的文章。你同意吗?

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/766299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档