• mysql explain详解


    explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。

    通过explain+sql语句可以知道如下内容:

    ①表的读取顺序。(对应id)

    ②数据读取操作的操作类型。(对应select_type)

    ③哪些索引可以使用。(对应possible_keys)

    ④哪些索引被实际使用。(对应key)

    ⑤表直接的引用。(对应ref)

    ⑥每张表有多少行被优化器查询。(对应rows)

    表头含义

    1. id表示表执行的优先级。如果explain的结果包括多个id值,则数字越大越先执行;而对于相同id的行,则表示从上往下依次执行。

    2. select_type查询的类型,主要用于区别普通查询、联合查询、子查询等复杂的查询。

    3. table表示当前这一行正在访问哪张表,如果SQL定义了别名,则展示表的别名

    4. type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
      system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般来说,得保证查询至少达到range级别,最好能达到ref。

    5.  possible_keys显示查询使用了哪些索引,表示该索引可以进行高效地查找,但是列出来的索引对于后续优化过程可能是没有用的(查询涉及的字段如果存在索引,则该索引就会被列出,但该索引不一定会被查询实际使用)
    6. key列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

    7. key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好

    8. ref列显示使用哪个列或常数与key一起从表中选择行。(表示mysql使用哪些列进行查询)

    9. rows 显示MYSQL执行查询的行数,简单且重要,数值越大越不好,说明没有用好索引

    10. Extra是EXPLAIN输出中另外一个很重要的列,该列显示MySQL在查询过程中的一些详细信息,MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。

    11. Extra是EXPLAIN输出中另外一个很重要的列,该列显示MySQL在查询过程中的一些详细信息,MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。

      联合索引使用总结

     

    in和exists的选择

    mysql中exists和in的区别有:1、in是把外表和内表做hash连接,先查询内表;2、exists是对外表做loop循环,循环后在对内表查询;3、在外表大的时用in效率更快,内表大用exists更快。

    (1)exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的使用exists,可加快效率;

    (2)in是把外表和内表做hash连接,先查询内表,再把内表结果与外表匹配,对外表使用索引(外表效率高,可用大表),而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。

    (3)如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。

  • 相关阅读:
    水果店圈子:小型水果店用什么保鲜,经营水果店的保鲜方法
    css盒模型
    SQL:常用的 SQL 命令
    Java“牵手”1688商品列表页数据采集+商品价格数据排序,商品销量排序数据,1688API接口采集方法
    7.1 为什么要用函数
    十四天算法快速入门第九天之「广度优先搜索 / 深度优先搜索」
    Django系列之Serializer的source参数使用、自定义序列化方法
    HSDB工具的使用说明
    交换机与路由技术-14-三层交换机配置
    GB28181学习(十六)——基于jrtplib实现tcp被动和主动收流
  • 原文地址:https://blog.csdn.net/qq_36575363/article/details/127083055