归纳总结:

1.mysql索引主要分类

  a. BTree索引

        b. Hash索引

  c. 全文索引

2.BTree索引介绍

  2.1. 为什么引入索引概念

  2.2. 索引是如何构成的

  2.3.索引查询快在哪儿 

 

2.1 为什么引入索引

  毫无疑问,就是为了提高检索效率。

2.2 索引的构成

  B-Tree 向 B+Tree 转换

  BTree也时属于平衡树的一种。大致有一下几种结构的演进。

       数据库自身会维护一套除数据之外的数据结构:索引结构。这个索引结构完成2部分功能:

  a.映射物理数据关系

  b. 负责根据索引查询数据 

  数据结构:BTree数据结构二元组[key,data],其中key为记录的键值,data是除键值以外的数据。

  B-Tree 树的特点:  。。。 指针 + [key1,data1] + 指针 + [key2,data2] + 指针 。。。

。。。 指针 + [key3,数据记录] + 指针 + [key4,数据记录] + 指针 。。。   。。。 指针 + [key5,数据记录] + 指针 + [key6,数据记录] + 指针 。。。

  B+Tree 树的特点:    [key1] + 指针 + [key2] + 指针

                                        [key1,数据记录][key2,数据记录]  [key3,数据记录]  [key4,数据记录] 

2.3 BTree快在哪儿

  a. 采用树型结构,降低查询复杂度。

b.由于索引过大时,内存不可能完全存储。此时需要将索引存储到本地磁盘中。但是同时带来了IO效率的问题。因此,利用磁盘预读取的机制,采用局部性原理,在减少寻道时间的情况下,可提前将整页数据存储到内存,加快查询效率。 

 

3.MySQL索引实现方式

  a.  MyISAM索引实现

    b. InnoDB索引实现

  3.1  MyISAM索引实现( B+Tree )-非聚集索引

    结构:索引文件+数据文件

    结构样例:          

                    [key1] + 指针 + [key2] + 指针

                                        [key1,数据记录的地址][key2,数据记录的地址]  [key3,数据记录的地址]  [key4,数据记录的地址] 

      注意:引用地址与实际数据存在映射关系

    主索引:主键唯一

    辅助索引:主键可重复,其余和住索引一样

    表要求:表可以没有主键 

    搜索方式

      采用技术:前缀压缩技术

  3.2  InnoDB索引实现 ( B+Tree ) -聚集索引

     结构:索引文件

     结构样例:         

                   [key1] + 指针 + [key2] + 指针

                                        [key1,数据记录][key2,数据记录]  [key3,数据记录]  [key4,数据记录] 

                 

     主索引:主键唯一

     辅助索引:data 为主键,key为数据域

    表要求:表必须有主键 

    搜索方式  

    采用技术:按照原数据格式存储