2016-12-14 46 views
-1

我的問題是有關流程執行的問題,如果select語句具有依賴於兩個值的where子句,其中一個來自索引列,另一個不是。 例子:select語句中的索引執行流程

Select * from table1 where col1 = 'val1' and col2 = 'val2'; 

如果我們假定COL1被索引和col2上是沒有的。如果col2編入索引並且col1不是,它有什麼不同?

更新

我想問的是,難道查詢得到,如果有一列索引,另一個是不是更快?如果where子句只依賴於一個索引列,那麼它是一樣的嗎?

+2

它也取決於基數(如果'col1'是索引的一個,則在'col1'中具有'val1'的行數)。最好的辦法是運行查詢並查看執行計劃所說的內容。否則,這是太廣泛和開放的猜測。 –

+2

是的,它有所不同。你想解決什麼問題?對你的問題的回答很廣泛。 –

+0

我想問的是,如果有一列有索引而另一列沒有索引,查詢是否會變得更快?如果where子句只依賴於一個索引列,那麼它是一樣的嗎? – null

回答

-2

根據70-461材料:

FROM ON JOIN WHERE GROUP BY WITH CUBE or WITH ROLLUP HAVING SELECT 
DISTINCT ORDER BY TOP 

例如如果你有SELECT C1 AS x 你不能把WHERE x IS NOT NULL

在WHERE克勞斯的謂詞序列是由sql服務器根據微軟知道的參數定義。