07-MySQL索引

什么是索引:
	索引类似图书的目录索引,可以提高数据检索的效率,降低数据库的IO成本。
	索引其实就是一种排好序的数据结构。

1、索引的分类

 1. 主键索引:主索引,根据主键建立索引,不允许重复,不允许空值;
 2. 唯一索引:用来建立索引的列的值必须是唯一的,允许空值;
 3. 普通索引:用表中的普通列构建的索引,没有任何限制;
 4. 全文索引:用大文本对象的列构建的索引;
 5. 组合索引:用多个列组合构建的索引,这多个列中的值不允许有空值;
		组合索引需要遵循最左原则,即按照组合索引从左到右的顺序使用索引进行查询。

mysql的最左索引匹配原则

2、基于InnoDB引擎的索引原理

数据库的索引是基于B+Tree的数据结构实现的。
B+Tree:
	1.B+Tree只有叶子节点存储数据;
	2. 非叶子节点起到了索引的作用;
	3. 所有叶子结点使用链表相连;
B+Tree的优势:
	1. 磁盘读写代价更低;
	2. 随机IO的次数更少;
	3. 查询速度更稳定;

在这里插入图片描述

3、聚簇索引和非聚簇索引

聚簇索引:InnoDB中,以主键作为索引的称为聚簇索引,索引和数据存储在一起,找到索引就找到了数据。
非聚簇索引:在InnoDB中,以非主键作为索引的称为非聚簇索引,找到索引后还需要回表查询再找到数据;在MyISAM中的索引都是非聚簇索引,因为MyISAM中索引和数据是分开存储的。

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/rookie__zhou/article/details/111085916