sql優化--使用 exists 代替 in 和 關聯查詢(inner join) 昨天的這篇文章提及到的一些問題,在這裡我做一下自己的測試,測試結果以微軟標準adventureworks資料庫內資料結構為準。
測試語句:
code
setstatistics
io on
setstatistics
time
onselecta.*
from
production.product a
inner
join
production.productmodel b
on(a.productmodelid
=b.productmodelid)
selecta.*
from
production.product a
where
exists
(select'x
'from
production.productmodel b
where
a.productmodelid
=b.productmodelid)
selecta.*
from
production.product a
where
a.productmodelid in(
select
b.productmodelid
from
production.productmodel b)
測試統計:
code=0
毫秒,占用時間 =1
=0毫秒,占用時間 =1
=15毫秒,占用時間 =63
=0毫秒,占用時間 =1
=0毫秒,占用時間 =1
毫秒。(
9440
行受影響)表 '
worktable
'。掃瞄計數
0,邏輯讀取
0次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
表 'product
'。掃瞄計數
1,邏輯讀取
474次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
表 'productmodel
'。掃瞄計數
1,邏輯讀取
2次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
(1=63
毫秒,占用時間
=1984
毫秒。(
9440
行受影響)表 '
worktable
'。掃瞄計數
0,邏輯讀取
0次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
表 'product
'。掃瞄計數
1,邏輯讀取
474次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
表 'productmodel
'。掃瞄計數
1,邏輯讀取
2次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
(1=78
毫秒,占用時間
=1780
毫秒。(
9440
行受影響)表 '
worktable
'。掃瞄計數
0,邏輯讀取
0次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
表 'product
'。掃瞄計數
1,邏輯讀取
474次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
表 'productmodel
'。掃瞄計數
1,邏輯讀取
2次,物理讀取
0次,預讀
0次,lob 邏輯讀取
0次,lob 物理讀取
0次,lob 預讀 0次。
(1=109
毫秒,占用時間
=1366=0
毫秒,占用時間 =1
=0毫秒,占用時間 =1
毫秒。執行計畫
可以看到無論是查詢計畫還是統計io,都是一樣的。
這都是優化器的功勞,並不存在哪個謂詞就好些,除非你的測試環境是2000以下。
再讚一下Evernote
從開始使用evernote到現在已經有3 4年時間了,最初只為找乙個筆記軟體,現在已經發展成為無法代替,evernote是我唯一乙個心甘情願去付費的軟體。中間使用的過程中雖然也碰到很多問題 evernote太重量級 速度慢 中文支援不好等等,也中斷使用過一段時間,但是找了半天也沒找到乙個更合適的。隨...
成功就在於再堅持一下之中。
到了海拔5630公尺的前進營地,大家都很興奮。後進生 王靜 洪海,你走了多久?洪海 三個半小時。王靜 喲,看不出來,你有實力啊!華仔 王靜也挺有實力,狀態比去年好多了。王石 我看王靜已經完全適應高海拔登山了。今天的王靜已經不是昨天的你了。王靜被誇得不好意思 哎喲,謝了謝了。華仔 本來我的步伐頻率比老...
再論 無鎖資料結構(下)
上回說到實現了乙個無鎖的 wrrm 的指標保護演算法,但存在乙個問題是 寫執行緒在更新指標之後,更新游離物件引用計數之前,被強制殺死,會造成讀取執行緒的活鎖,這有悖乙個原則 好像叫什麼 寫無關原則 即使乙個執行緒崩潰也不該對其他執行緒造成太大影響 當然,所有執行緒全部被殺的話,啥演算法都玩完 下面的...