zoukankan      html  css  js  c++  java
  • SQL优化使用关联查询代替子查询

        SQL优化--使用关联查询代替子查询

       测试例子:

        子查询:

    select a.*,
    (
    select workflowname from workflowbase where id=workflowid) workflowname
    from  [[zping.com]]] a
    where a.operator='402882ed1112669201112a8385892f33'

       执行结果:

    (360 行受影响)
    表 
    'Worktable'。扫描计数 360,逻辑读取 142334 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 
    'workflowbase'。扫描计数 1,逻辑读取 1589 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 
    '[zping.com]'。扫描计数 1,逻辑读取 366 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

     关联查询:

    select a.*,b.workflowname
    from  [[zping.com]]] a inner join  workflowbase b on a.workflowid=b.id
    where operator='402882ed1112669201112a8385892f33'

      执行结果:  

    (360 行受影响)
    表 
    'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 
    'workflowbase'。扫描计数 1,逻辑读取 1589 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 
    '[zping.com]'。扫描计数 1,逻辑读取 366 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

       这里:子查询IO次数:142334 +1589+366=144289

               关联查询IO次数1589 +366 =1922

           关联查询是子查询的75倍   

    总结:

         使用子查询和关联查询,一般情况下如果能用关联查询就不用子查询,

  • 相关阅读:
    elasticsearch 基础 —— 集群原理
    剑指 offer set 10 栈的压入、弹出序列
    剑指 offer set 9 包含min函数的栈
    剑指 offer set 8 树的子结构
    剑指 offer set 7 调整数组顺序使奇数位于偶数前面
    剑指 offer set 6 打印从 1 到 N 的所有数
    剑指 offer set 5 二进制中 1 的个数
    剑指 offer set 4 矩形覆盖
    剑指 offer set 3 旋转数组的最小数字
    剑指 offer set 2 从头到尾打印链表
  • 原文地址:https://www.cnblogs.com/zping/p/1260978.html
Copyright © 2011-2022 走看看