Mysql基础1(索引)

1.索引是mysql实现的嘛?

                              Mysql基础1(索引)

                                                                               mysql的体系结构

            正确的创建合适的索引是提升数据库查询性能的基础
 索引是什么? 

        索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构

             Mysql基础1(索引)   

2.为什么要用索引?

1)索引能极大的减少存储引擎需要扫描的数据量

2)索引可以把随机IO变成顺序IO

3)索引可以帮助我们进行分组排序等操作,避免使用临时表

3.什么是B+ tree?

首先如果是链式结构,查找的效率不高,所以肯定是要利用树形结构,但是利用树形结构首先来看:

1)二叉查找树

                                                         Mysql基础1(索引)

                                                                                  二叉树结构图

                                    Mysql基础1(索引)            

缺点:

         1.它太深了:数据处的深度决定它的IO操作次数,IO操作消耗大;

         2.它太小了:每个节点保存的数据量太少了,没有很好利用磁盘IO的读写能力;

2)多路平衡二叉树:

                             Mysql基础1(索引)

3)加强版多路平衡二叉树(b+树):

                           Mysql基础1(索引)

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

 

                               Mysql基础1(索引)

                                                                                      myisam

                                  Mysql基础1(索引)

      mysql中b+tree索引体现形式 ---Innodb

      以主键索引组织为数据结构

      聚集索引:数据库表行中数据的物理顺序与键值的逻辑顺序相同;

                                              Mysql基础1(索引)

                                            Mysql基础1(索引)

InnoDB和myisam

                                    Mysql基础1(索引)

 

5.索引补充知识点

     列的离散性

                         Mysql基础1(索引)

最左匹配原则:

                             Mysql基础1(索引)

联合索引列选择原则
1, 经常用的列优先 【最左匹配原则】
2, 选择性(离散度) 高的列优先【离散度高原则】
3, 宽度小的列优先【最少空间原则】
                       Mysql基础1(索引)

覆盖索引: 

   1.如果查询列可通过索引节点中的关键字直接返回, 则该索引称之为覆盖索引。
   2.覆盖索引可减少数据库IO, 将随机IO变为顺序IO, 可提高查询性能。