【发布时间】:2014-10-22 14:23:54
【问题描述】:
我有几个表的列可以是ENUM 类型或INT 类型。我倾向于总是使用整数类型,假设基于它执行搜索会更快。
例如,我的一个表有一个列:StatusType,它只能有 4 个可能的值:Completed、In Progress、Failed、Todo。
我没有将上面存储为 ENUM 字符串,而是将它们存储为:
分别为1、2、3、4。然后在我的 PHP 代码中,我有定义这些值的常量变量,如下所示:
define('COMPLETED', 1);
define('IN_PROGRESS', 2);
define('FAILED', 3);
define('TODO', 4);
现在我的问题是,我这样做是正确的还是应该将其更改为 ENUM 类型并使用字符串在查询中进行比较?我有许多其他列只能有一组最大 4-5 可能值。
【问题讨论】:
-
为什么不将它们作为字符串存储在 varchar 列中呢?
-
@karlingen 在整数上搜索比在字符串上更快不是吗?
-
你是如何使用这张桌子的?它是写得最多还是读得最多?
-
@JNevill 主要阅读。但它也写了很多。
-
使用 php 枚举:php.net/manual/en/class.splenum.php,阅读其他答案以了解原因。