sql優化--使用關聯查詢代替子查詢
測試例子:
子查詢:
selecta.*
,(select
workflowname
from
workflowbase
whereid=
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次。
關聯查詢:
selecta.*
,b.workflowname
from
[[zping.com
]]] a
inner
join
workflowbase b
ona.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倍
總結:使用子查詢和關聯查詢,一般情況下如果能用關聯查詢就不用子查詢,
子查詢快 還是關聯查詢快 SQL關聯子查詢
關聯子查詢,根本含義就是對於外部查詢返回的每一行資料,內部查詢都要執行一次,就像python裡邊說的遍歷一樣。遍歷後對符合條件的記錄進行操作。題目 查詢每門課程的成績第2名到第3名的學生資訊及該課程成績 selectwhere跟的條件的含義 查詢同乙個課程sc表的成績小於sc1表的總人數。子查詢中 ...
sql關聯查詢 子查詢綜合應用
乙個主表,關聯若干個子表,同時還要獲取子表的標識資訊,例如 人 刑滿釋放 易上訪 重點青少年,吸毒人員,臨時管控人員 應用場景就是,某某人有可能身兼數職 例如即是易上訪 又是刑滿釋放 而且還是臨時管控 可以試試如下的一攤 大多數都能看懂,歡迎提供更好的方式。select from select ai...
SQL關聯查詢
一 關聯基礎 連線查詢 查詢兩個或兩個以上資料表或檢視的查詢,通常建立在存在相互關係的父子表之間。關聯查詢 查詢的結果集中的字段可能來自多張表。要從多張表中獲取資料時,就要找到這幾張表記錄的對應關係,然後建立聯絡後分別獲取。所以連線條件 指明表之間記錄的對應關係 在關聯查詢中十分關鍵。n 張表關聯查...