是的,MySQL可以对单个查询使用多个索引。优化器将确定哪些索引将使查询受益。您可以
EXPLAIN用来获取有关MySQL如何执行语句的信息。您可以使用如下提示来添加或忽略索引:
SELECt * FROM t1 USE INDEX (i1) IGNORE INDEX FOR ORDER BY (i2) ORDER BY a;
我建议阅读有关MySQL如何使用索引的内容。
只是摘录:
如果可以在多个索引之间进行选择,则MySQL通常会使用查找最少行数的索引。
如果col1和col2上存在多列索引,则可以直接获取适当的行。如果col1和col2上存在单独的单列索引,则优化器将尝试使用索引合并优化(请参见第8.2.1.4节“索引合并优化”),或尝试通过确定哪个索引发现的索引较少而找到限制性最强的索引。行并使用该索引来获取行。



