通常在我的项目(PHP / MySQL)中,我必须在某些数据库表中添加“status”字段。例如,标记任务是否已提交,批准,拒绝。
出于习惯,到目前为止我一直在使用数字状态代码(0代表提交,1代表批准,-1代表拒绝)。出于某些原因,我认为服务器处理起来效率更高。
现在我想知道,我的假设有缺陷吗?有关系吗?为了便于阅读,将它们存储为VARCHAR会更容易,例如'SUBMITTED','APPROVED','REJECTED'。然后在PHP代码中而不是检查数值,检查字符串。
我很确定理论上检查INT比String更快。但是,对于网络应用程序来说,这是不同的吗?
请告知。
由于
答案 0 :(得分:3)
也许这只是一个偏好问题,但我讨厌没有明显意义的幻数。在这种情况下,通常有两种情况:
在第一种情况下,我更喜欢使用ENUM作为列类型。它在内部作为整数处理,但你将其称为字符串。
在第二种情况下,我创建一个主表并将子列定义为外键。这给了值的一些含义,即使它是一个自动递增的整数。并且它无论如何都不需要是整数。
答案 1 :(得分:1)
使用ENUM可以获得这两种方法的好处。
如果你想使用纯数字代码,不要将它们与PHP中的数字进行比较,定义常量:
define( 'SUBMITTED', 1 );
define( 'APPROVED', 2 );
define( 'REJECTED', 3 );
if( $code == APPROVED ) {
//do something
}