鱼C论坛

 找回密码
 立即注册
查看: 2212|回复: 0

MYSQL面试题

[复制链接]
发表于 2020-5-8 23:10:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.问题描述:
说明关系型数据库通过索引提升查询效率的背后原理
(美团2020春招)

解答:
(1)如果没有索引,数据库引擎需要通过全表扫描来查找数据,将会产生大量的磁盘IO
(2)关系型数据库使用B+树构建索引来加快查询。B+树是一种二叉查找树(每个加点的键值必须保证:比保存在右子树的任何键值都要小,比保存在左子树的任何键值都要大),这样随机查找某个键值时可以通过从根节点执行二叉查找来加速查询,查询成本取决于树的层数。
(3)针对范围查询和排序的优化:在每个叶子节点保存下一个叶子节点的指针,这样当指定范围查询是,先从根节点根据范围的左值找到叶子节点,之后通过向后遍历叶子节点即可找到对应范围的右值,这样可以加速范围查询、排序、分组等数据库查询动作,
(4)针对磁盘读写速度的优化。除了叶子节点之外的其他节点只保存剑指,这样对磁盘的单词读写可以获取到尽可能多的数据。
(5)MYSQL等数据库引擎在实际实现B+树索引的时候,针对磁盘读写做了优化:非叶子节点中只存放KEY值,叶子节点中除了KEY值也会存放数据,按照存放数据的不同索引区分主索引(聚簇索引)和辅助索引。其中主索引的叶子节点汇总存放该key值对应的完整记录,使用主索引进行查询时,可以直接输出记录,一个表只能创建一个主索引。普通索引的叶子节点则存放对应主键值,因此在使用辅助索引进行查找时,需要先找到主键值,然后再到主索引中进行查找,一个表可以创建多个辅助索引。
(6)除了B+树,关系型数据库一般也支持哈希索引,哈希索引能够非常高效地进行随机查找,但是对于范围查询、排序和分组都不支持。

参考视频:https://www.bilibili.com/video/B ... 2510924859431231520
题目来自:牛客网

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 19:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表