MySQL进阶--索引优化

MySQL进阶--索引优化

  • 索引分析
    • 单表
    • 两表
    • 三表
  • 索引失效(避免)
  • 综合

索引分析

单表

insert into article(author_id,category_id,views,comments,title,content) values
(1,1,1,1,'1','1'),
(2,2,2,2,'2','2'),
(3,3,3,3,'3','3');

MySQL进阶--索引优化_第1张图片

MySQL进阶--索引优化_第2张图片
MySQL进阶--索引优化_第3张图片
MySQL进阶--索引优化_第4张图片

两表

book 、class表
第一种
MySQL进阶--索引优化_第5张图片
第二种
MySQL进阶--索引优化_第6张图片
MySQL进阶--索引优化_第7张图片

三表

MySQL进阶--索引优化_第8张图片
建索引
MySQL进阶--索引优化_第9张图片
MySQL进阶--索引优化_第10张图片MySQL进阶--索引优化_第11张图片

索引失效(避免)

b+树数据结构需要弄清楚,后面就知道了
失效原因:
MySQL进阶--索引优化_第12张图片

select*没有覆盖索引。而按需查询索引列,使用了覆盖索引,但ref索引的那一列使用都一样为null,为索引扫描
2、最佳左前缀法则

但我在实验时,发现type为index,用到了索引
下面是视频上的截图

在这里插入图片描述
MySQL进阶--索引优化_第13张图片
3、
MySQL进阶--索引优化_第14张图片
4、
MySQL进阶--索引优化_第15张图片
5、尽量使用索引覆盖,按需去数据,减少select *
MySQL进阶--索引优化_第16张图片
6、在使用!=的时候无法使用索引会导致全表扫描

!=、is nul not、null
MySQL进阶--索引优化_第17张图片
7、like
如果要用到左边的%,优化为覆盖索引
select*没有覆盖索引
MySQL进阶--索引优化_第18张图片

按需查询,覆盖索引,查询的全部都为索引列
MySQL进阶--索引优化_第19张图片
8、字符串不加单引号索引失效
如果字符串类型不加单引号
mysql在底层会隐式转换为varchar类型
MySQL进阶--索引优化_第20张图片
9、少用or,用他来连接时会索引失效
MySQL进阶--索引优化_第21张图片

综合

MySQL进阶--索引优化_第22张图片

MySQL进阶--索引优化_第23张图片

MySQL进阶--索引优化_第24张图片

MySQL进阶--索引优化_第25张图片
MySQL进阶--索引优化_第26张图片
c2常量
MySQL进阶--索引优化_第27张图片
在这里插入图片描述
MySQL进阶--索引优化_第28张图片

MySQL进阶--索引优化_第29张图片

你可能感兴趣的:(mysql,mysql,索引,数据库)