- 一、概念
- 二、索引实现
- 1.存储
- 2.页
- 3.B+树
- 4.聚集索引
- 5.辅助索引
- 6.最左匹配原则
- 7.覆盖索引
- 三、索引构建原则
- 1. 索引失效
- 2. 索引原则
- 3. EXPLAIN指令
一、概念
| 概念 | 表达式 | |
|---|---|---|
| 主键索引 | 非空唯一索引,一个只有一个主键索引;innodb中,主键索引的B+树包含表数据信息 | PRIMARY KEY(key) |
| 唯一索引 | 不可以出现相同的值,可以有NULL值 | UNIQUE(key) |
| 普通索引 | 允许出现相同的索引内容 | INDEX(key) OR KEY(key[,…]) |
| 组合索引 | 对表上的多个列进行索引 | INDEX idx(key1,key2[,…]) |
| 全文索引 | 将存储在数据库当中的整本书和整篇文章中的任意内容信息查找出来的技术 | FULLTEXT (key1, key2) |
Innodb由段、区、页组成分为数据段、索引段、回滚段等;
区大小为1MB(一个区由64个连续页构成);
页的默认值为16k(逻辑页)
为了保证页的连续,存储引擎一般一次从磁盘中申请4~5个页
innodb磁盘管理的最小单位;默认16k,可通过innodb_page_size参数来修改;
B+树的一个节点的大小就是该页的值
在B树的基础上优化为B+树,目的为了方便范围查找,所以将叶子节点相连
4.聚集索引按照主键构建的B+树;叶子节点中存放数据页;数据也是索引的一部分
5.辅助索引叶子节点不包含行记录的全部数据;辅助索引的叶子节点中,除了用来排序的key还包含一个bookmark;该书签存储了聚集索引的key
6.最左匹配原则对于组合索引,从左到右一次匹配,遇到> 从辅助索引中就能找到数据,而不需通过聚集索引查找;利用辅助索引树高度一般低于聚集索引树;减少磁盘io; 概念:用来查看SQL语句的具体执行过程。
2. 索引原则
3. EXPLAIN指令
原理:模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。



