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倍   

    总结:

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

  • 相关阅读:
    不相交集合ADT
    Python基于比较的排序
    优先队列(堆)
    Python数据结构——散列表
    设计包含min函数的栈
    What really happens when you navigate to a URL
    browser process request
    Business vs Technology
    理解端口与IP
    Tor的教程
  • 原文地址:https://www.cnblogs.com/zping/p/1260978.html
Copyright © 2011-2022 走看看