有兩個查詢,一個是OR,一個是IN(),是否具有相同的性能?
有2個疑問:
select a,b,c,d from test where a=1 or a=2 or a=3
和
select a,b,c,d from test where a in (1,2,3)
哪一個性能更好?在表格中,列a上有一個索引。
有兩個查詢,一個是OR,一個是IN(),是否具有相同的性能?
有2個疑問:
select a,b,c,d from test where a=1 or a=2 or a=3
和
select a,b,c,d from test where a in (1,2,3)
哪一個性能更好?在表格中,列a上有一個索引。
這應該取決於。
正如你在評論中所說的那樣,有很多變數。
最好的方法是針對每個特定查詢運行某種解釋計劃,並查看特定數據庫加載的特定數據和特定查詢之間的差異(如果有的話)。
在風格上,這不是問題,我個人更喜歡在這些情況下的IN子句。
大多數(如果不是全部的話)查詢優化器會在選擇執行計劃之前將其中一個表單重寫爲另一個表單。所以這兩個將會有相同的表現。
一般不! OR運算符比IN運算符更靈活,可用於評估更多條件。
儘管使用IN運算符(包含)的任何條件都可以使用OR運算符替換爲相同的運算符,但事實並非如此:涉及OR運算符的條件真的很多使用IN運算符沒有相同的條件。
這意味着當使用適當的操作符(IN)而不是更通用的操作符時,可以更好地識別內含物,從而可以高效地對它們進行詳細闡述。
爲什麼不只是運行它們並親自查看? – 2012-02-04 12:53:38
因爲我不確定這不取決於行大小,索引類型,行數量等。 – user710818 2012-02-04 12:57:31