我应该对值为1和0的字段使用mysql enum或tinyint吗?

时间:2010-07-05 08:58:41

标签: mysql

我将tinyint(1)用于包含1或0的字段,对于xample,is_active。我可以使用枚举('1','0')但不确定哪些情况我应该使用枚举或tinyint。任何评论/建议?

由于

的js

6 个答案:

答案 0 :(得分:2)

在您的情况下,enumtinyint的大小相同(即1 byte)。但是,如果您的数据发生更改,则enum选项的灵活性会降低。因此,如果您绝对确定,请使用它,您的数据定义不会更改(例如,如果您将来添加'disabled'状态会怎样?)。

如果您决定坚持enum enum('active', 'not_active')之类的定义更为实用。

答案 1 :(得分:1)

  

BOOL,BOOLEAN。这些类型是TINYINT(1)

的同义词

我认为你应该选择tinyint(1)

答案 2 :(得分:0)

这取决于数据库引擎选择在引擎盖下做什么。如果你永远不会超越两个选项,我会推荐tinyint - 但我怀疑它有很大的不同。

答案 3 :(得分:0)

我个人的偏好是使用TINYINT(1)

答案 4 :(得分:0)

enum('active', 'inactive')将使用优于enum(0, 1)的枚举优势。

答案 5 :(得分:0)

如果你想拥有特定的值,枚举很好 - 例如:

enum('y','n')

但是如果你只需要一个简单的布尔值,请使用tinyint(1)。