当前位置:   article > 正文

Java基础语法教学视频,MySql知识体系总结(SQL优化篇

Java基础语法教学视频,MySql知识体系总结(SQL优化篇

备注:因为mysql优化器的缘故,与索引顺序不一致,也会触发索引,但实际项目中尽量顺序一致。

5、联合索引,但其中一个条件是 >

6、联合索引,order by

where和order by一起使用时,不要跨索引列使用。

三、单表sql优化


1、删除student表中的联合索引。

2、添加索引


alter table student add index student_union_index(name,age,sex);

  • 1
  • 2
  • 3

优化一点,但效果不是很好,因为type是index类型,extra中依然存在using where。

3、更改索引顺序

因为sql的编写过程


select distinct ... from ... join ... on ... where ... group by ... having ... order by ... limit ...

  • 1
  • 2
  • 3

解析过程


from ... on ... join ... where ... group by ... having ... select distinct ... order by ... limit ...

  • 1
  • 2
  • 3

因此我怀疑是联合索引建的顺序问题,导致触发索引的效果不好。are you sure?试一下就知道了。


alter table student add index student_union_index2(age,sex,name);

  • 1
  • 2
  • 3

删除旧的不用的索引:


drop index student_union_index on student

  • 1
  • 2
  • 3

索引改名


ALTER TABLE student RENAME INDEX student_union_index2 TO student_union_index

  • 1
  • 2
  • 3

更改索引顺序之后,发现type级别发生了变化,由index变为了range。

range:只检索给定范围的行,使用一个索引来选择行。

备注:in会导致索引失效,所以触发using where,进而导致回表查询。

4、去掉in

ref:对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取;

index 提升为ref了,优化到此结束。

5、小结

  1. 保持索引的定义和使用顺序一致性;

  2. 索引需要逐步优化,不要总想着一口吃成胖子;

  3. 将含

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/464840
推荐阅读
相关标签
  

闽ICP备14008679号