MySQL Enum 性能优势?

发布于 2024-07-17 03:59:45 字数 55 浏览 5 评论 0原文

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

Is there a performance advantage to using enum in situations where there are only 5-10 different possible values for a field? if not what is the advantage?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

盗琴音 2024-07-24 03:59:45

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

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

  • 更改允许值集。 它需要一个 ALTER TABLE 语句,该语句会锁定表并可能进行重组。

我不喜欢 MySQL 的 ENUM。 我更喜欢使用查找表。 另请参阅我对“如何处理数据库中没有枚举字段的枚举?

There is a huge performance penalty to using ENUM for operations such as:

  • Query the list of permitted values in the ENUM, for instance to populate a drop-down menu. You have to query the data type from INFORMATION_SCHEMA, and parse the list out of a BLOB field returned.

  • Alter the set of permitted values. It requires an ALTER TABLE statement, which locks the table and may do a restructure.

I'm not a fan of MySQL's ENUM. I prefer to use lookup tables. See also my answer to "How to handle enumerations without enum fields in a database?"

久夏青 2024-07-24 03:59:45

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

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

ENUMs are represented internally by 1 or 2 bytes, depending on the number of values. If the strings you're storing are larger than 2 bytes and rarely change, then an ENUM is the way to go. Comparison will be faster with an enum and they take up less space on disk, which in turn can lead to faster seek times.

The downside is that enums are less flexible when it comes to adding/removing values.

旧时光的容颜 2024-07-24 03:59:45

在本文中 使用 ENUM 数据类型以提高性能 Fernando 研究了 Enum 类型的查询性能。

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

嗯,很明显,从设计的角度来看,使用 ENUM 似乎不太优雅(如果我在多个表中使用类型会发生什么?如果我想添加一种类型怎么办?我必须更改表格!),如果我要处理大量数据(并且我的测试是少量的,但我没有服务器,只有一个非常简陋的笔记本),性能优势可能是值得的.

详情请参阅他的文章。 你同意?

In this article Using the ENUM data type to increase performance Fernando looks into performances of Enum type for queries.

The result is that while using ENUM might seem a little less elegant from a design point of view (if your ENUM value are changing sometimes), the performance gain is obvious for large datasets.

Well, it's quite obvious that while using ENUM might seem a little less elegant from a design point of view (what happens if I use Types in more than just one table? What if I want to add a type? I have to alter the table!), the performance benefits, if I'm going to be handling large quantities of data (and my tests have been with small amounts, but I don't have a server, just a very humble notebook) might be worthwhile.

See his article for details. Do you agree?

私野 2024-07-24 03:59:45

不,请参阅比较 这里

优点在于代码可读性。

No, see a comparison here

The advantage lays in code readability.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文