1.索引的作用
类似于一本书的目录,气到优化查询的功能
2.索引类型
BTREE索引
RTREE索引
HASH索引
FULLTEXT(全文)索引
3.BTREE的细分类(算法)
B-TREE
B+TREE
B*TREE
4. Btree索引的功能分类
聚集索引(集群索引)
辅助索引(二级索引)
5. B树是如何创建的
辅助索引:
1)将name列的所有值取出来,进行自动排序
2)将排完序的值均匀的落在16kb叶子节点数据页中,并将索引键值所对应的数据行的聚集索引的列值
3)向上生成枝节点和根节点
聚集索引(IOT)
1)默认是按照主键生成聚集索引,没有主键,存储殷勤会使用唯一键,如果都没有,会生成隐藏的聚集索引。
2)数据在存储时,就会按照聚集索引的顺序存储到磁盘的数据页。
3)有雨本身的数据就是有序的,所以聚集索引构建是时,就不需要排序
4)聚集索引直接将磁盘的数据页,作为叶子节点
5)枝节点和根节点只会调取下层节点主键的最小值
6.辅助索引和聚集索引的区别
1)辅助索引:
叶子结点只保存主键值+索引键值的有序存储
对索引键值会自动排序
需要手工创建
辅助索引可以有多个
任何列都可以创建
2)聚集索引
只能在主键列生成,唯一且非空
数据存储时,就是按照聚集索引顺序进行有序存储
叶子节点不需要单独生成
7.辅助索引细分
单列辅助索引
select * from ti where name=''
联合索引
select * from t1 where a and b and c
唯一索引
8.索引树 的高度(越低越好)
8.1表的数据量级大
了解:分区表
分库分表(分布式架构)
8.2 索引键值的长度
1)尽可能选择列值短的列创建索引
2)采用前缀索引
8.3数据类型的选择
char 和 varchar
enum
9.索引管理
9.0 压力测试准备
10.explain(desc) 工具
desc select * from test.t100w where k2='cdHI';
#或者
explain select * from test.t100w where k2='cdHI';
#执行一样
作用:
抓取优化器优化过的执行计划
10.1执行计划分析
mysql[test]>desc select * from test.t100w where k2='cdHI';
table:以上SQL语句设计的表
type:查询的类型(全表扫描<ALL>,索引扫描,查不到数据<NULL>)
possible_keys:可能用到的索引
key:使用到的索引
key_len:索引的覆盖长度
extra:额外的信息
10.2详细说明
10.2.1
ALL:全表扫描,不会走任何索引
1)查询条件,没建索引
2)有索引不走
10.2.2index 全索引扫描
mysql[test]>desc select k2 from t100w;
+----+-------------+-------+------------+-------+---------------+--------+---------+------+--------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+--------+---------+------+--------+----------+-------------+
| 1 | SIMPLE | t100w | NULL | index | NULL | idx_kd | 17 | NULL | 997665 | 100.00 | Using index |
+----+-------------+-------+------------+-------+---------------+--------+---------+------+--------+----------+-------------+
1 row in set, 1 warning (0.00 sec)
=========从染个开始,我们才认为索引是有价值的===
10.2.3.range索引范围查询
辅助索引:
< , >, >=, <= , like, between an
in() , or
聚集索引:
!=,not in
ref:辅助索引等值查询
ref_eq:多表链接查询中,非驱动表on的条件列是主键或者唯一键
const(system):主键或唯一键的等值
NULL:获取不到数据