本文主要是介绍MySQL索引合并,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Index merge
一定程度上可以使用表上多个单列索引定位指定的行
在MySQL5.0和更新版本中,查询能够同时使用这两个单列索引进行扫描并对结果进行合并
- OR条件的union
- AND条件的intersection
- 前两种情况的union和intersection
索引合并有时候是优化结果,但实际上说明表索引建立得很糟糕
- 当server对多个index做AND条件,意味着需要一个包含所有相关列的多列索引,而不是多个独立的单列索引
- 当server对多个index做OR条件,需要耗费大量CPU和内存资源在算法的缓存、排序和合并操作上
- 特别是有些索引选择性不高,需要合并扫描返回大量数据
优化器不会将这些计算到“查询成本”中
![](/upload/202110/25/202110251914457470.png)
如果在explain中看到有索引合并,需要检查查询和表的结构,查看是否最优
也可以通过参数optimizer_switch来关闭索引合并功能,也可以使用IGNORE INDEX让优化器忽略某些索引
这篇关于MySQL索引合并的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!