每日十题八股-2024年12月25日

1.性别字段能加索引么?为啥?
2.表中十个字段,你主键用自增ID还是UUID,为什么?
3.为什么自增ID更快一些,UUID不快吗,它在B+树里面存储是有序的吗?
4.Mysql中的索引是怎么实现的 ?
5.查询数据时,到了B+树的叶子节点,之后的查找数据是如何做?
6.B+树的特性是什么?
7.说说B+树和B树的区别
8.B+树的好处是什么?
9.B+树的叶子节点链表是单向还是双向?
10.MySQL为什么用B+树结构?和其他结构比的优点?

1.性别字段能加索引么?为啥?

不建议,因为只有两个值,并且没有区分度,基本是55开。索引还要增加IO次数(回表操作,根据主键从聚簇索引中找到其他字段),不如全表查询。

2.表中十个字段,你主键用自增ID还是UUID,为什么?

自增。理由就是下一题。
在这里插入图片描述

3.为什么自增ID更快一些,UUID不快吗,它在B+树里面存储是有序的吗?

UUID不快,且会产生也分裂和碎片,并且树的高度会变高,增加IO发生次数。
在这里插入图片描述

4.Mysql中的索引是怎么实现的 ?

不知道该怎么说,就是树的非叶子结点,存放索引字段和指针,指针执行下一层结点。直到叶子结点才不是存放指针,而是数据。

5.查询数据时,到了B+树的叶子节点,之后的查找数据是如何做?

https://www.cnblogs.com/aaabbbcccddd/p/14696328.html
通过B+树之后,找到对应的页之后进行二分查找来找到对应数据。

6.B+树的特性是什么?

在这里插入图片描述

7.说说B+树和B树的区别?

binary search tree 二叉搜索树。
在这里插入图片描述
效率更加稳定(B+Tree 永远是在叶子节点拿到数据,所以 IO 次数是稳定的)。

8.B+树的好处是什么?

非叶子节点不存放实际的记录数据,仅存放索引,叶子结点存放数据,且是双向链表连接,便于范围查找,并且建树矮胖,查询底层节点的磁盘 I/O次数会更少。B+树有大量的冗余节点(所有非叶子节点都是冗余索引),这些冗余索引让 B+ 树在插入、删除的效率都更高,比如删除根节点的时候,不会像 B 树那样会发生复杂的树的变化;

9.B+树的叶子节点链表是单向还是双向?

双向的,为了实现倒序遍历或者排序。
在这里插入图片描述# 10.MySQL为什么用B+树结构?和其他结构比的优点?
其他可选的数据结构无非是B树,二叉树,Hash表。
Hash查找快,但对于范围查询需要进行多次查找。二叉树因为限制节点数量,因此树很深,搜索复杂度比B+树高。B 树 的非叶子节点也要存储数据,所以 B+Tree 的单个节点的数据量更小。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值