视频课程
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

视频课程
立即观看
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频
开始学习
会员专享

视频合集

MySQL索引优化最全攻略,4大维度解读!

  • 课程笔记
  • 问答交流

索引的重要性不言而喻,面试基本必考,你除了要掌握好我之前讲的MySQL索引的底层实现,还有就是今天我要讲到的索引实战攻略。

为了助大家掌握好索引,这节课我会重点讲解以下5点:

1.慢查询优化方案?

2.索引军规有哪些?

3.怎样做索引优化?

4.哪些会造成索引失效?

5.索引优化的级别?

评论交流
  1. 路正银

    1:什么情况需要用到索引?
    在经常需要搜索的列上,可以加快搜索的速度;
    在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
    在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;
    在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
    在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
    在经常使用在WHERE子句上的列上面创建索引,加快条件的判断速度。

    2:什么情况不需要建立索引?
    第一,对于那些在查询中很少使用或者参考的列不应该创建索引。
    第二,对于那些只有很少数据值的列也不应该增加索引。
    第三,对于那些定义为text、image和bit数据类型的列不应该增加索引。
    第四,当修改性能远远大于搜索性能时,不应该创建索引。

    3:哪些情况索引会失效?
    1、如果条件中有or,即使其中有条件带索引也不会使用
    2、对于多列索引,不是使用的第一部分,则不会使用索引
    3、like查询是以%开头
    4、如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
    5、如果mysql估计使用全表扫描要比使用索引快,则不使用索引

    4:MySQL 5.6中,对索引做了哪些优化?
    索引下推;如果没有索引下推优化,当进行索引查询时,首先根据索引来查找记录,然后再根据where条件来过滤记录;当支持ICP优化后,mysql会在取出索引的同时,判断是否可以进行where条件过滤再进行索引查询,也就是说提前执行where的部分过滤操作,在某些场景下,可以大大减少回表次数,从而提升整体性能。

    • mikechen

      索引失效的部分还可以在增加,这块的内容非常重要,可以结合着上面我的图再来增加,还可以建立的更加完整。

      MySQL5.6的改进部分,这个也是大厂在面试的考点,建议可以结合一个例子再来加深理解?