MySQL表中布尔标志的替代方案?

时间:2010-08-19 10:20:05

标签: mysql optimization boolean database-schema

我在我的表中使用了各种布尔标志,并且通过阅读有关优化性能的一些内容,我遇到了一个广泛的提示,以避免使用布尔标记。

有效的替代方案是什么?一些例子将非常感谢。

2 个答案:

答案 0 :(得分:4)

  

我在我的表中使用各种布尔标志,并从阅读中略过优化   性能我遇到了一个广泛的提示,以避免使用布尔标志。

MySQL中,BOOLEAN只是TINYINT(1)的别名。

这意味着布尔运算实际上是整数运算。

除其他外,这意味着在这样的查询中:

SELECT  *
FROM    mytable
WHERE   boolean_flag = 0

可以使用boolean_flag上的索引(如果有的话),而在这一个中:

SELECT  *
FROM    mytable
WHERE   NOT boolean_flag

不会使用索引。

答案 1 :(得分:2)

如果你有很多布尔字段,可以使用bit

而不是四个字段“true,false,false,true”存储一个数字“9”(二进制1001)