第八章 索引的创建和设计原则
1.索引的声明和使用
https://www.bilibili.com/video/BV1iq4y1u7vj?p=128
1.1 索引分类
按照功能逻辑分类:
主键索引就是聚簇索引;
1.2 创建索引
https://www.bilibili.com/video/BV1iq4y1u7vj?p=129
1.创建表的时候创建索引
1.1 隐式创建索引
1.2 显示创建索引
2.在已经存在的表上创建索引
第二种方式:
P130-删除索引和索引新特性:降序索引、隐藏索引
1.3 删除索引
删除索引第一种方式:
删除索引第二种方式:
2.Mysql8.0 索引新特性
2.1 支持降序索引
这么建立索引的话:执行如下sql可以完全走索引
select * from ts1 order by a,b desc ;
2.2 隐藏索引
创建隐藏索引方式1:
创建隐藏索引方式2:
切换索引可见状态:
了解部分:
P131-适合创建索引的11种情况
3. 索引的设计原则
3.1 哪些情况适合创建索引
1.字段的数值有唯一性限制
2.频繁作为where查询条件的字段
3.经常group by和order by的列
group_by :建立索引后,会根据该字段排序,所以会待在一起,分组就更快
(1) 对group by字段和order by字段分别建立单列索引
(2) 按顺序对group by字段和order by字段建立联合索引
(3) 反序对group by字段和order by字段建立联合索引
总结:
group by+order by的情况下,需要按照先后顺序对group by的字段和order by的字段建立联合索引;
4.update\delete语句中的where条件列
update
delete
P132
5.distinct字段需要创建索引
6.多表join时创建索引注意事项
7.使用数据类型小的字段创建索引
8. 使用字符串前缀创建索引
9.对散列性高的字段建立索引
10.使用最频繁的字段放在联合索引左侧
如上图sql,建立联合索引时,常用的放在左边;不过会有优化器对and条件进行优化
11. 多个字段创建索引的情况下,联合索引更优
3.2 索引数目不要太多
3.3 不适合创建索引的7种情况
1.where条件、group by、order by用不到的字段
2.小表
3. 有大量数据重复的字段