mysql - 为什么 ENUM 优于 INT

标签 mysql

我刚刚在我的一张 table 上运行了“PROCEDURE ANALYZE ( )”。我有一个 INT 类型的列,它只包含从 0 到 12(类别 ID)的值。 MySQL 说我最好使用 ENUM('0','1','2',...,'12')。这个类别基本上是静态的,将来不会改变,但如果他们改变了,我可以改变那个列并将它添加到 ENUM 列表中......

那么为什么 ENUM 在这种情况下更好呢?

编辑:我最感兴趣的是这个...的性能方面

最佳答案

简单来说,就是索引方式不一样。

在这种情况下,ENUM 表示“它是这 13 个值之一”,而 INT 表示“它可以是任何整数。”

这意味着索引更容易,因为它不必考虑对那些您不使用的整数进行索引,“以防万一”您曾经使用过它们。

这一切都与算法有关。

不过,当它达到 INTENUM 更快的地步时,我自己也会感兴趣。

虽然在 ENUM 中使用数字可能有点危险......就好像您将这个数字不加引号发送给 SQL - 您可能最终会得到错误的值!

关于mysql - 为什么 ENUM 优于 INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/113609/

相关文章:

mysql - 与 App Engine 共享的计算引擎 SQL

php - Mysqli多行插入,简单的多插入查询

php - 更新 php-mysql 中的表

php - 使用 PHP、PDO、MYSQL 将 Android 推送通知发送到多个设备

mysql - MySQL二进制日志事件中的 "table_id"是什么?

mysql - 逆向工程 mysql 数据库以创建 django 应用程序

php - MySQL 子组?

mysql - SQL中获取children的记录总数

在 AWS RDS 上托管的数据库上导入 SQL 脚本时出现 MySql 错误 'max_allowed_packet' 字节

mysql - Objective-C 数据库连接