zoukankan      html  css  js  c++  java
  • mysql 重新整理——索引优化explain字段介绍一 [九]

    前言

    在七种介绍了explain这东西,那么具体来看下它是如何来运行的吧。

    正文

    id

    来看一条语句:EXPLAIN select * from departments,dept_emp,employees

    当id相同的时候:代表在同一队列里面加载,就是说他们加载不是并发的,而是有顺序的。

    然后一个问题,就是说我们写的顺序是:departments,dept_emp,employees ,然後你看他们的加载顺序是:departments,employees ,dept_emp。

    然后看另外一条语句:

    explain SELECT * FROM temployees  WHERE emp_no= (
    SELECT dept_emp.emp_no
    
    FROM dept_emp
    
    WHERE dept_emp.dept_no=(
    
    SELECT departments.dept_no 
    
    FROM departments
    
    WHERE departments.dept_name="Finance"
    )
    )
    

    在此注明,上面表的东西呢,是mysql 官方测试表。

    那么看一下:

    就算我们不看explain,其实我们也知道肯定是执行:departments,dept_emp,employees 。

    所以是id越大越先执行。

    总结一下:如果id相同,从上至下按照顺序执行,如果id不同,越大越先执行。

    select_type

    这个查询可以告诉我们到底是什么样的查询:

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

    这里先列一下有哪些查询:

    1.simple:简单的select,查询中不包含子查询或者union

    2.primary:那个包含任何复杂的子查询,最外层查询则被标记为这个。

    可以参考我前面这个图:

    3.subquery:在select 或者 where 列表中包含子查询

    4.derived 在from 中包含的子查询被标记为derived,mysql会递归执行这些子查询,把结果放在临时表中。

    5.union,如果第二个select 出现在union之后,则会标记为union。
    如果union 包含在from 子句中的子查询中,外层的select 被标记为:derived。

    6.union result 从union获取结果的select。

    table

    table 就非常简单了,就是表。

    后语

    后面补齐。

  • 相关阅读:
    Python资源大全中文版
    Python数据结构之字符串
    一头扎进Node系列
    MySQL的安装配置与卸载
    编程日常单词
    ping请求找不到主机 请检查该名称
    Node项目日志管理
    Node版本控制利器
    JavaScript 数据去重的常用几种方法
    一头扎进Node(一)
  • 原文地址:https://www.cnblogs.com/aoximin/p/13020139.html
Copyright © 2011-2022 走看看