当进行一个select查询时,该查询是否有可能接受多个索引(单索引或复合索引)?
发布于 2016-10-31 13:02:22
正如MySQL关于MySQL如何优化WHERE子句的文档所述:
每个表索引都会被查询,并且使用最好的索引,除非优化器认为使用表扫描更有效。
如果使用索引合并优化,上述规则有一个轻微的例外:
Index方法用于检索具有多个范围扫描的行,并将其结果合并为一个。合并可以生成其底层扫描的联合、交叉或联合交叉。此访问方法从单个表合并索引扫描;它不合并多个表的扫描。 在“解释输出”中,index_merge方法在类型列中显示为index_merge。在本例中,键列包含使用的索引列表,key_len包含这些索引最长关键部分的列表。
但是,如果您的索引是经过深思熟虑的,那么多列索引将覆盖大约50%的索引合并用例。索引合并并不是1索引规则的完全例外,因为单独的索引被放在一起处理,就像进程中的单个索引一样。
https://stackoverflow.com/questions/40342366
复制相似问题