文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
相关文章:
文章目录:
1.索引是mysql实现的嘛?
mysql的体系结构
正确的创建合适的索引是提升数据库查询性能的基础
索引是什么?
索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构
2.为什么要用索引?
1)索引能极大的减少存储引擎需要扫描的数据量
2)索引可以把随机IO变成顺序IO
3)索引可以帮助我们进行分组排序等操作,避免使用临时表
3.什么是B+ tree?
首先如果是链式结构,查找的效率不高,所以肯定是要利用树形结构,但是利用树形结构首先来看:
1)二叉查找树
二叉树结构图
缺点:
1.它太深了:数据处的深度决定它的IO操作次数,IO操作消耗大;
2.它太小了:每个节点保存的数据量太少了,没有很好利用磁盘IO的读写能力;
2)多路平衡二叉树:
3)加强版多路平衡二叉树(b+树):
4.B+ tree与B- tree的区别:
1.b+节点关键字搜索采用闭合区间
2.b+非叶子节点不保存数据相关的信息,只保存关键字和子节点的引用
3.b+关键字对应的数据保存在叶子节点中
4.b+叶子节点是顺序排序的,并且相邻节点具有顺序引用的关系
为什么要选用B+ tree?
1)b+树是变种多路绝对平衡查找树,拥有b-树的优势
2)b+树扫库,表能力更强
3)B+树的磁盘读写能力更强
4)b+树的排序能力更强
5)b+树的查询效率更加稳定
mysql中b+tree索引体现形式 ---Myisam
myisam
mysql中b+tree索引体现形式 ---Innodb
以主键索引组织为数据结构
聚集索引:数据库表行中数据的物理顺序与键值的逻辑顺序相同;
InnoDB和myisam
5.索引补充知识点
列的离散性
最左匹配原则:
联合索引列选择原则
1, 经常用的列优先 【最左匹配原则】
2, 选择性(离散度) 高的列优先【离散度高原则】
3, 宽度小的列优先【最少空间原则】
覆盖索引:
1.如果查询列可通过索引节点中的关键字直接返回, 则该索引称之为覆盖索引。
2.覆盖索引可减少数据库IO, 将随机IO变为顺序IO, 可提高查询性能。