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倍   

    总结:

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

  • 相关阅读:
    [leetcode]Search for a Range
    Codeforces 432 D. Prefixes and Suffixes
    FZU2127:养鸡场
    安德鲁斯----多媒体编程
    hive RegexSerDe View
    Android 随着输入框控件的清除功能ClearEditText,抄IOS输入框
    Eclipse——热键&Help
    图像形态学操作—腐蚀扩展深度
    基于速度学习机的局部感受野
    Qt:使用Model-View,动态的加载显示数据
  • 原文地址:https://www.cnblogs.com/zping/p/1260978.html
Copyright © 2011-2022 走看看