MySQL索引面试(更新)

本文介绍了索引的概念、优点与缺点,强调在大数据量下使用索引来提升查询效率的重要性。讨论了B+树作为索引数据结构的原因,并区分了聚簇索引与非聚簇索引,解释了InnoDB和MyISAM存储引擎的区别。最后提到了数据库最左匹配原则在联合索引中的应用。
摘要由CSDN通过智能技术生成

索引介绍及特点:

概念:索引就是一个数据结构,我们把表中的记录用一个适合高效查找的数据结构来表示,目的就是让查询变得更高效。
优点:加快对表中记录的查找或排序
缺点:创建索引和维护索引需要成本,这个成本随着数据量的增加而加大
使用场景:数据库中表的数据量较大的情况下,对于查询响应时间不能满足业务需求,可以合理的使用索引提升查询效率。


面试问题:

谈谈你对索引的了解?

首先几种适合快速查找的数据结构,比如:hash(哈希)、二叉树,红黑树,B+树。
为什么不用hash?如果使用哈希作为索引,对ID做索引的话,可以对ID使用hash(ID),存储到合适的位置。但无法进行范围查找。
为什么不用二叉搜索树:因为会出现如下图这样的链状结构。多次与磁盘IO。

在这里插入图片描述
为什么不用红黑树呢?红黑树虽然层级降低了,但也需要多次I/O。
因此需要一个多叉排序树(B树),同时支持范围查找的结构,B+树就出现了。
B+树特点:
节点的子树数和关键字数相同(B 树是关键字数比子树数少一)
节点的关键字表示的是子树中的最大数,在子树中同样含有这个数据
叶子节点包含了全部数据,同时符合左小右大的顺序

什么是聚簇索引与非聚簇索引?

MyISAM: B+Tree叶节点的data域存放的是数据记录的地址。在索引检索的时候,⾸先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其 data 域的值,然后以 data 域的值为地址读取相应的数据记录。这被称为“⾮聚簇索引”。

InnoDB: 其数据⽂件本身就是索引⽂件。相⽐MyISAM,索引⽂件和数据⽂件是分离的,其表数据⽂件本身就是按B+Tree组织的⼀个索引结构,树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据⽂件本身就是主索引。这被称为“聚簇索引(或聚集
索引)”。
从文件中可以看出 MyISAM存储引擎的mysql对表会存储三个文件,后缀名 MYI(索引文件),后缀名MYD(数据文件),后缀名frm(表字段结构文件)。而对于InnoDB存储引擎的表会存储两个文件,后缀名frm(表字段结构文件),后缀名ibd(数据文件)。

数据库最左匹配原则

建立联合索引时会遵循最左匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。具体看大佬的,美团一面时就问到了我实际的,没回答上来。链接。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值