zoukankan      html  css  js  c++  java
  • mysql 重新整理——索引优化一个简单的案例 [十一]

    前言

    经过了前面的一系列理论,那么用一个例子去看一下吧。

    正文

    EXPLAIN SELECT t3.emp_no,t3.first_name,(select t4.last_name from temployees t4 where t4.emp_no=t3.emp_no) AS last_name
    from  (select t1.emp_no,t1.first_name from temployees t1 where t1.emp_no in (10001,10002)) t3
    where t3.emp_no=10002
    UNION
    select t2.emp_no,t2.first_name,t2.last_name
    from temployees t2
    where t2.emp_no=10001
    

    这是一段很诡异的代码,没人会这样写,在此只是作为分析处理。

    我们看下结果:

    那么按照我们前面的分析,来看一下它的执行顺序是啥,暂时就不去看它的一个索引利用率了。

    在该系列九中有一个结论,当id越大越先执行。

    那么看一下吧:

    1. 首先是4,加载执行t2。这里我们可以看出其实mysql运行是的下的代码,而不是union上面的。

    2. 然后是2,这时候也就是去加载t4,执行子查询,子查询发现了需要表t1,其实是t3,但是t3是临时表在这里没有显示。

    3. 最后去加载t1进行查询,将结果返回给t4,t4执行完返回结果。

    4. 最后一步就是合并结果。

  • 相关阅读:
    不用加减乘除做加法
    求1+2+3+...+n
    孩子们的游戏(圆圈中最后剩下的数)
    扑克牌顺子
    翻转单词顺序列
    左旋转字符串
    和为S的两个数字
    和为S的连续正数序列
    毕设进度12
    毕设进度11
  • 原文地址:https://www.cnblogs.com/aoximin/p/13123858.html
Copyright © 2011-2022 走看看