再論一下in,exists,join

2022-02-18 13:28:26 字數 2549 閱讀 8816

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 的指標保護演算法,但存在乙個問題是 寫執行緒在更新指標之後,更新游離物件引用計數之前,被強制殺死,會造成讀取執行緒的活鎖,這有悖乙個原則 好像叫什麼 寫無關原則 即使乙個執行緒崩潰也不該對其他執行緒造成太大影響 當然,所有執行緒全部被殺的話,啥演算法都玩完 下面的...