为什么MySQL的布尔类型映射到tinyint而不是枚举?

时间:2010-12-29 19:27:37

标签: mysql

在枚举中使用tinyint(1)是否存在性能或兼容性原因?还有别的吗?

2 个答案:

答案 0 :(得分:2)

您可能会感兴趣的是MySQL indexes ENUMs with integers

自1999年以来,SQL标准包含一个布尔数据类型 - 有效值为true,false,unknown或null。 Implementation across various database systems is spotty

MySQL不支持真正的布尔数据类型 - BOOLEAN映射到TINYINT,它只占用1个字节。 MySQL将0解释为false,其他所有数字都为真。

答案 1 :(得分:1)

最多包含8个值的枚举存储在一个字节中。 tinyint也存储在int中。所以没有区别。 MySQL不知道bools所以人们使用其中任何一个选项,性能等等。这没什么区别。