mysql优化

1.找到问题,哪里特变慢

2、最简单的优化方式,让性能翻倍

3.解析阿里规范让性能翻倍

4.通过索引让新能飙升(这里有深坑)

5.解决神坑,终极杀器-执行计划


机器执行顺序

执行计划explain type system>const>eq_ref>ref>range>index>all最好到最差依旧是


左连接时,右表加索引。反过来也一样,也相反加索引。

索引优化

右边加%,会导致索引失效,如果必须加右边%才能查,可以用覆盖索引来解决这个问题





什么叫做覆盖索引?

      在了解覆盖索引之前我们先大概了解一下什么是聚集索引(主键索引)和辅助索引(二级索引)

      聚集索引(主键索引):

          聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。

          聚集索引的叶子节点称为数据页,聚集索引的这个特性决定了索引组织表中的数据也是索引的一部分。

      辅助索引(二级索引):

          非主键索引,叶子节点=键值+书签。Innodb存储引擎的书签就是相应行数据的主键索引值。

        再来看看什么是覆盖索引,有下面三种理解:

解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。

解释二: 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫 做覆盖索引。

解释三:是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。

  不是所有类型的索引都可以成为覆盖索引。覆盖索引必须要存储索引的列,而哈希索引、空间索引和全文索引等都不存储索引列的值,所以MySQL只能使用B-Tree索引做覆盖索引

  当发起一个被索引覆盖的查询(也叫作索引覆盖查询)时,在EXPLAIN的Extra列可以看到“Using index”的信息

      从执行结果上看,这个SQL语句只通过索引,就取到了所需要的数据,这个过程就叫做索引覆盖。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 系统层面(基本不用动,看了下,买的云服务器基本都已经优化过了) 内核相关参数(/etc/sysctl.conf) ...
    神奇大叶子阅读 2,061评论 0 4
  • 1.高并发优化点有: 如果请求过多,判定web服务器的压力过大,增加前端的web服务器,做负载均衡 如果请求静态界...
    Aimerwhy阅读 583评论 0 0
  • MySQL 优化 前段时间公司内部做技术培训,轮到我需要讲MySQL的优化,基本上准备了一个周,看书看视频做了一个...
    就很Nice阅读 290评论 0 1
  • 一 OS系统优化 1 内核优化 1)IO调度优化 调整Linux默认的IO调度算法. IO调度器的总体目标是希望让...
    PennLi阅读 612评论 0 2
  • 在刷好友动态时,看到了朋友的小秘密。楼主问“男生很喜欢一个女生,应该会主动吧?不主动应该是不喜欢吧?”楼下有很多条...
    雨后晴天的女孩阅读 185评论 0 1