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 的单个节点的数据量更小。

11万+

被折叠的 条评论
为什么被折叠?



