18

保存真/假值的字段的最佳做法是什么?

这样的列可以定义为 enum('yes','no') 或 tinyint(1)。一个比另一个更好/更快吗?

使用 enum('1','0') 与 enum('yes','no') 更好吗(即,它是否将 'yes' 或 'no' 作为字符串写入每一行,以便数据库存储尺寸变大)?

4

3 回答 3

15

由于这个原因避免枚举

底线是 ENUM 有它的位置,但应该谨慎使用。模型应该强制执行约束,而不是数据库;模型应该将原始数据解释为对您的视图有用的信息,而不是数据库。

于 2010-11-28T14:39:04.923 回答
12

BOOLEAN类型的存在是有原因的。它确实是一个TINYINT(1)但既然它在那里,它必须是推荐的方式。

于 2010-11-28T14:27:33.887 回答
11

另外,ENUM是一个非标准的 MySql 扩展。你应该避免它,特别是如果你能以标准的方式获得相同的结果。

于 2010-11-28T14:28:46.143 回答