有时我不确定在MysQL中是否使用enum或char(1).例如,我存储帖子的状态.通常情况下,我只需要Active或Passive在status现场估价.我有两个选择:
// CHAR
status char(1);
// ENUM (but too limited)
status enum('A', 'P');
Run Code Online (Sandbox Code Playgroud)
如果我想Hidden在将来再添加一种状态类型(即.)怎么样?如果我有小数据,这将不是问题.但是如果我的数据太大,那么编辑ENUM类型就会出问题.
那么如果我们考虑MySQL性能,你的建议是什么?我会走哪条路?
都不是.您通常将tinyint与查找表一起使用
char(1)会稍慢,因为比较使用整理
混乱:当你延伸到A和P以上时
在添加更多类型时使用字母限制您.见最后一点.
我见过的每个系统都有一个以上的客户端,例如报告.A和P必须在每个客户端代码中解析为Active和Passive
可扩展性:添加一个类型("S"表示"已暂停")您可以将一行添加到查找表或更改大量代码和约束.还有你的客户端代码
维护:逻辑分为3个位置:数据库约束,数据库代码和客户端代码.使用查找和外键,它可以在一个地方
枚举不便携
在使用单个字母或枚举的正面
注意:有关于Enums的相关DBA.SE MySQL问题.建议也在那里使用查找表.
| 归档时间: |
|
| 查看次数: |
4030 次 |
| 最近记录: |