第八章 索引的创建和设计原则
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. 有大量数据重复的字段


4.经常更新的表

5.不建议用无序值作索引

6.删除不再使用或者很少使用的索引

7.避免冗余和重复索引


3.4 索引创建和设计小结

