MySQL索引合并

2021/10/25 19:14:45

本文主要是介绍MySQL索引合并,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Index merge

一定程度上可以使用表上多个单列索引定位指定的行

在MySQL5.0和更新版本中,查询能够同时使用这两个单列索引进行扫描并对结果进行合并

  • OR条件的union
  • AND条件的intersection
  • 前两种情况的union和intersection

索引合并有时候是优化结果,但实际上说明表索引建立得很糟糕

  • 当server对多个index做AND条件,意味着需要一个包含所有相关列的多列索引,而不是多个独立的单列索引
  • 当server对多个index做OR条件,需要耗费大量CPU和内存资源在算法的缓存、排序和合并操作上
  • 特别是有些索引选择性不高,需要合并扫描返回大量数据

优化器不会将这些计算到“查询成本”中

如果在explain中看到有索引合并,需要检查查询和表的结构,查看是否最优

也可以通过参数optimizer_switch来关闭索引合并功能,也可以使用IGNORE INDEX让优化器忽略某些索引

 

 



这篇关于MySQL索引合并的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程