sql优化,关于联合索引某个中间字段使用>(大于)号,导致后面索引失效的理解

大于号导致索引失效的原因?
mysql先用=号去查数据,找到最后的叶子节点,然后往后推,找大于的所有数据
如果在字段在中间使用大于号,没有通过索引走到底层的叶子节点,那么取出来的数据没有精确到某一个数据上,只是在某个范围里面。形成一个临时表,然后根据后面的条件在这个临时表里面取值。而后面的条件不能使用索引,所以后面的字段自然是索引失效。因为后面的字段使用索引的前提条件是,前面的字段精确到了某一个节点上面,可是前面的字段并没有精确到某个节点,是精确到了很多节点,因此没有办法走索引。

总结:范围查询是精确到最后的叶子节点,也就是找到了数据的情况。
而在中间某个字段使用范围导致后面字段失效的原因,是使用索引并没有精确到数据层(叶子节点层),而是走到了中间的节点层,而且找到了很多节点,导致后面的字段没有办法往下走找数据,因此后面的字段没有走索引。

你可能感兴趣的:(sql优化,关于联合索引某个中间字段使用>(大于)号,导致后面索引失效的理解)