SQL優化--使用關聯查詢代替子查詢

測試例子:測試

    子查詢:workflow

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

 

   執行結果:select

(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'tab

  執行結果:  ping

(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 次。co

 

   這裏:子查詢IO次數:142334 +1589+366=144289join

           關聯查詢IO次數:1589 +366 =1922

       關聯查詢是子查詢的75倍   

 

總結:

 

     使用子查詢和關聯查詢,通常狀況下若是能用關聯查詢就不用子查詢,

相關文章
相關標籤/搜索