gpt4 book ai didi

php - MySQL 枚举与整数

转载 作者:可可西里 更新时间:2023-11-01 06:28:52 25 4
gpt4 key购买 nike

我有几个表的列可以是 ENUM 类型或 INT 类型。我倾向于总是使用整数类型,假设基于它执行搜索会更快。

例如,我的一个表有一列:StatusType,它只能有 4 个可能的值:CompletedIn Progress失败待办事项

我没有将上面的内容存储为 ENUM 字符串,而是将它们存储为:

1234。然后在我的 PHP 代码中,我有像这样定义这些值的常量变量:

define('COMPLETED', 1);
define('IN_PROGRESS', 2);
define('FAILED', 3);
define('TODO', 4);

现在我的问题是,我的做法是否正确,或者我应该将其更改为 ENUM 类型并使用字符串在查询中进行比较?我有许多其他列只能有一组最大 4-5 可能的值。

最佳答案

枚举值在 MySQL 中看起来非常酷,但我不喜欢它们。它们被限制为 255 个值,因此如果您决定添加更多值,则可能会遇到限制。此外,正如您所描述的,您需要将应用程序代码中的值与数据库中的值同步——这似乎有潜在的危险。

此外,它们使某些 future 的改变变得更加困难。例如,其他数据库不支持枚举。而且,如果您想添加多语言支持,在数据库的数据类型定义中嵌入代码有点难以处理。

更标准的方法是一个或多个引用表,您可以在其中使用join 来获取值。您可以使用混合方法,在该方法中使用数据库中的引用表。然后您可以将引用表加载到应用程序中以获取从数字到字符串的映射,从而避免代码中的连接。

关于php - MySQL 枚举与整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26509801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com