【MySQL面试题】为什么使用B+树作为索引?

问:你的系统使用了什么数据库?

答:是使用的MySQL数据库。

问:你了解过MySQL索引吗?有哪些呢?

答:MySQL常用的有innodb和myisam索引。

问:那innodb底层采用的是什么结构呢?

答:它底层采用的是b+树的结构,内部也支持hash的结构。

好了,面试官引导的差不多了,接下去就要好好回答了。
问:那为什么不是b树或者其他的树结构呢?

答:b+树是一个多叉的平衡树,平衡树就是每个节点的叶子节点高度差不超过1,并且在它的非叶子节点存储的是索引,数据全都存储在叶子节点中,用一个链表串联起来,遍历时只需遍历该链表。

问:那为什么是多叉并且是平衡呢?

答:多叉且平衡可以使树的高度降低,降低查询时IO的次数。并且索引存在着一定的顺序,支持范围的比较查询。

问:那么一般数据库表会有多个索引,查询随便一个非主键索引时是如何查询的呢?

答:在数据库中,存在主键(聚集)索引和普通索引。如果没有指定默认会生成一个聚集索引,在查询非聚集索引时,该索引数据结构的底层存储的是主键的值,因此会根据查询到的主键再做一次回表查询 在使用explain关键字时会出现 using index condition。

问:那么如何避免回表查询呢?

答:我们可以利用索引覆盖的原理,在出了主键索引外,对要查询的其他字段添加普通索引即可。

避免回表优化参考链接

你可能感兴趣的:(MySQL,随笔,mysql,索引,数据库)