美文网首页
mysql数据库

mysql数据库

作者: 从零开始的程序猿生活 | 来源:发表于2023-06-05 17:30 被阅读0次

    索引

    EXPLAIN

    使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句

    1、使用方法

    Explain+SQL 语句 或者 Explain+ tablename

    2、返回信息
    image.png
    id:select 查询的序列号,包含一组数字, 表示查询中执行 select 子句或操作表的顺序。
    id相同,执行顺序由上至下
    id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行。
    有相同也有不同,id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行衍生=DERIVED。
    注:id号每个号码,表示一趟独立的查询。一个sql的查询趟数越少越好

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

    • SIMPLE:单表查询
      explain select * from t1;
    • PRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为Primary
      explain select * from (select t1.content from t1 ) a;
    • DERIVED:在FROM列表中包含的子查询被标记为DERIVED(衍生),MySQL会递归执行这些子查询,把结果放到临时表中。
      explain select * from (select t1.content from t1 ) a;
    • SUBQUERY:在SELECT或WHERE列表中进行了子查询
      explain select t2.id from t2 where t2.id = (select t3.id from t3 where t3.id =2);
    • DEPENDENT SUBQUERY :在 SELECT 或 WHERE 列表中包含了子查询,子查询基于外层。
      explain select t2.id from t2 where t2.id in (select t3.id from t3 where t3.id =2);
      都是where后的条件,subquery是单个值,dependent subquery是一组值。
    • UNCACHEABLE SUBQUREY : 当使用了@@来引用系统变量的时候, 不会使用缓存。
    • UNION:若第二个 SELECT 出现在 UNION 之后, 则被标记为 UNION; 若 UNION 包含在 FROM 子句的子查询中,外层
      SELECT将被标记为: DERIVED。

    相关文章

      网友评论

          本文标题:mysql数据库

          本文链接:https://www.haomeiwen.com/subject/jpcwedtx.html