使用mysql ENUM是一个糟糕的架构解决方案吗?

art*_*ave 13 mysql architecture

对我来说,就像在应用程序代码中使用硬编码值而不是常量变量一样.但那里有不同的意见.所以我无法确定.

PS对于这个问题的范围,我们假设性能不是问题.

Jam*_*s B 10

这取决于你想要实现的目标.如果你说的性能不是问题,那么它在很大程度上取决于你的理念,以及数据固有的可变性.如果您使用ENUM来存储一周中几天的值,以帮助人类可读性和数据的"可查询性",那么它是完全有效的用途(并且在某些情况下,使用数字或其他方面更优越)表示).但是,如果您使用它来存储产品所属的类别(可用类别集可能很容易改变),那么这是一个非常糟糕的解决方案.


ste*_*bot 5

ENUM非常适合您将要属于静态集合的数据。

如果您使用的是Mysql 5+,则使用ENUM类型存储静态集中的数据几乎总是更好,如官方MySQL参考所示。更不用说数据是可读的,并且您需要进行额外的验证。

如果您想知道使用ENUM是否会是一种优化,我建议您使用PROCEDURE ANALYZE。这将为您的列推荐正确的数据类型。