归纳总结:
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为数据域
表要求:表必须有主键
搜索方式
采用技术:按照原数据格式存储