今天接着读《MySQL技术内幕InnoDB存储引擎》的第5章关于索引这部分内容。
每日学习笔记(15)
原创
©著作权归作者所有:来自51CTO博客作者phinecos的原创作品,请联系作者获取转载授权,否则将追究法律责任
什么时候使用B+树索引?并不是在所有的查询条件下出现的列都需要添加索引,作者指出当访问表中很少一部分行时,使用B+树索引才有意义。对于像性别,地区,类型等字段,它们的可取值范围很小,即所谓低选择性,比如Select * from student where sex=’M’,那么结果可能是该表50%的数据,此时添加B+树索引是完全没有必要的,相反,如果某个字段的取值范围很广,几乎没有重复性,即高选择性,则此时使用B+树索引是最合适的,例如姓名字段。
因此,当访问高选择性字段并从表中取出很少一部分数据行时,对这个字段添加B+ 树索引是非常有必要的。但是如果出现了访问字段是高选择性的,但是取出的行数据占据表中大部分的数据时,此时MySQL就不会使用B+树索引了。MySQL的优化器会通过EXPLAIN的rows字段预估查询可能得到的行,如果大于某个值,则B+树会选择进行全表的扫描,至于这个值,作者估计一般为20%,即取出的数据量超过表中数据的20%,优化器就不会使用索引,而是进行全表的扫描。但有时优化器的选择并不完全是正确的,此时你可以强制使用索引。
上一篇:每日学习笔记(16)
下一篇:每日学习笔记(14)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
HarmonyOS NEXT 学习笔记
鸿蒙os 页面一键置灰
页面效果 API -
学习笔记(15)
学习笔记
学习笔记 51cto -
学习笔记15
学习笔记15
学习笔记15