一尘不染

索引布尔字段是否有任何性能提升?

mysql

我将要编写一个包含的查询WHERE isok=1。顾名思义,isok是一个布尔字段(实际上是a TINYINT(1) UNSIGNED,根据需要设置为0或1)。

索引该字段是否有任何性能提升?引擎(在这种情况下为InnoDB)在查找索引时会表现得更好还是更差?


阅读 283

收藏
2020-05-17

共1个答案

一尘不染

并不是的。您应该像书一样思考它。如果一本书中只有3种单词并且您都对它们进行了索引,那么您将拥有与普通页面相同数量的索引页面。

如果一个值的记录相对较少,则性能会有所提高。例如,如果您有1000条记录,其中10条为TRUE,那么如果使用isok = 1

正如迈克尔·杜兰特(Michael Durrant)所说,这也会使写入速度变慢。

编辑:可能的重复:索引布尔字段

在这里,它说明即使有索引,但是如果您有太多的记录,它还是不会使用索引。 MySQL在检查= 1时不使用索引,而在=
0时使用

2020-05-17