我刚刚在我的一张 table 上运行了“PROCEDURE ANALYZE ( )”。我有一个 INT 类型的列,它只包含从 0 到 12(类别 ID)的值。 MySQL 说我最好使用 ENUM('0','1','2',...,'12')。这个类别基本上是静态的,将来不会改变,但如果他们改变了,我可以改变那个列并将它添加到 ENUM 列表中......
那么为什么 ENUM 在这种情况下更好呢?
编辑:我最感兴趣的是这个...的性能方面
最佳答案
简单来说,就是索引方式不一样。
在这种情况下,ENUM
表示“它是这 13 个值之一”,而 INT
表示“它可以是任何整数。”
这意味着索引更容易,因为它不必考虑对那些您不使用的整数进行索引,“以防万一”您曾经使用过它们。
这一切都与算法有关。
不过,当它达到 INT
比 ENUM
更快的地步时,我自己也会感兴趣。
虽然在 ENUM
中使用数字可能有点危险......就好像您将这个数字不加引号发送给 SQL - 您可能最终会得到错误的值!
关于mysql - 为什么 ENUM 优于 INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/113609/