碰到这种问题最简单的方法就是验证一下。
执行计划:
EXPLAIN SELECT class_score,class_name from student where class_score=56 and class_name='a' ;
-
都是唯一索引,type是const,用到索引是class_name。
-
两个都是普通索引,影响行数都是一行,type是ref,用到索引是class_name。
-
两个都是普通索引,影响行数不同,type是ref,用到索引是class_score。
-
两个都是普通索引,影响行数相同,都是两行,type是index_merge。两个索引都有用到,用到了交集Using intersect(class_name,class_score);
总结:
不用在意条件的前后顺序,MySQL在查找的时候会进行优化。具体优化方式需要继续研究。