我将要编写一个包含的查询WHERE isok=1。顾名思义,isok是一个布尔字段(实际上是a TINYINT(1) UNSIGNED,根据需要设置为0或1)。
WHERE isok=1
isok
TINYINT(1) UNSIGNED
索引该字段是否有任何性能提升?引擎(在这种情况下为InnoDB)在查找索引时会表现得更好还是更差?
并不是的。您应该像书一样思考它。如果一本书中只有3种单词并且您都对它们进行了索引,那么您将拥有与普通页面相同数量的索引页面。
如果一个值的记录相对较少,则性能会有所提高。例如,如果您有1000条记录,其中10条为TRUE,那么如果使用isok = 1
isok = 1
正如迈克尔·杜兰特(Michael Durrant)所说,这也会使写入速度变慢。
编辑:可能的重复:索引布尔字段
在这里,它说明即使有索引,但是如果您有太多的记录,它还是不会使用索引。 MySQL在检查= 1时不使用索引,而在= 0时使用