今天接着读《MySQL技术内幕InnoDB存储引擎》的第5章关于索引这部分内容。
什么时候使用B+树索引?并不是在所有的查询条件下出现的列都需要添加索引,作者指出当访问表中很少一部分行时,使用B+树索引才有意义。对于像性别,地区,类型等字段,它们的可取值范围很小,即所谓低选择性,比如Select * from student where sex=’M’,那么结果可能是该表50%的数据,此时添加B+树索引是完全没有必要的,相反,如果某个字段的取值范围很广,几乎没有重复性,即高选择性,则此时使用B+树索引是最合适的,例如姓名字段。
因此,当访问高选择性字段并从表中取出很少一部分数据行时,对这个字段添加b+ 树索引是非常有必要的。但是如果出现了访问字段是高选择性的,但是取出的行数据占据表中大部分的数据时,此时mysql就不会使用b+树索引了。mysql的优化器会通过explain的rows字段预估查询可能得到的行,如果大于某个值,则b+树会选择进行全表的扫描,至于这个值,作者估计一般为20%,即取出的数据量超过表中数据的20%,优化器就不会使用索引,而是进行全表的扫描。但有时优化器的选择并不完全是正确的,此时你可以强制使用索引。
作者:洞庭散人
出处:http://phinecos.cnblogs.com/
水彩春季少女配饰小物矢量素材适用于手账和日记本、日程规划表、笔记本和学习资料、贺卡和邀请函、旅行日志、食谱和烹饪手册、儿童教育书籍、个人博客和社交媒体等相关设计的AI格式素材。









