2013-02-15 27 views
2

考慮以下兩個查詢:使用「IN」和「相同SQL查詢中的一些OR」是否相等?

查詢1

Select * from table where field = value1 OR field = value2 ... OR field = valueN 

查詢2

Select * from table where field IN (value1, value2 , .... , valueN) 

是兩個查詢已效果相同的數據庫? 還是有一種有效的方法來做到這一點?

+1

他們是相同的。最後一句話就是執行計劃 – 2013-02-15 09:46:49

+0

他們不是。執行計劃並不是故事的結尾,證據支持[這個重複的問題](http://stackoverflow.com/questions/782915/mysql-or-vs-in-performance),它發現一些情況下,「IN」顯着更快。也就是說,這種差異不太可能在現實中出現問題。 – Synchro 2014-08-13 18:03:22

回答

3

沒有差別!

最後,在數據庫內部

這個查詢

Select * from table where field IN (value1, value2 , .... , valueN) 

被轉換成

Select * from table where field = value1 OR field = value2 ... OR field = valueN 
+1

是的,查詢優化器步驟使它們等價。 – 2013-02-15 09:47:13