视频合集

    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的改进部分,这个也是大厂在面试的考点,建议可以结合一个例子再来加深理解?

    欢迎您,新朋友,感谢参与互动!