联合索引中,出现范围查询( >,<
),范围查询右侧的列索引失效。
explain select * from tb_user where profession = '软件工程' and age > 30 and status = '0';
当范围查询使用 > 或 <
时,走联合索引了,但是索引的长度为49,就说明范围查询右边的status字 段是没有走索引的。
解决办法:
explain select * from tb_user where profession = '软件工程' and age >= 30 and status = '0';
当范围查询使用 >= 或 <=
时,走联合索引了,但是索引的长度为54,就说明所有的字段都是走索引 的。
所以,在业务允许的情况下,尽可能的使用类似于 >= 或 <= 这类的范围查询,而避免使用 > 或 < 。