2013-12-10 32 views
1
select productname, warehouseid, needsrefill 
from tableA 
where stockDate > '1/5/2011' and salesDate >= '2/5/2011' 

如果stockDate和salesDate都有索引,這個查詢仍然是SARGable ...對嗎?此查詢是否仍然具有兩個不同列的SARGable?

+0

從谷歌搜索,看起來像那樣SARGable =不要使用函數。 – tyteen4a03

+1

@TimothyChoi這太簡單了。只要_index_使用相同的函數,就可以使用函數。 –

回答

2

的種類。

它不能執行簡單的查找,一次評估兩個謂詞。

它可以對索引進行範圍查找,其索引列爲stockDatesalesDate,另一列爲殘差謂詞。

因此,假設在stockDate, salesDate這一變化的指數,可用於各種尋求stockDate > '1/5/2011',但它仍然需要評估該範圍內的所有匹配的行,看看他們是否符合salesDate標準。

或者,它可以做一個範圍尋求兩個單獨的索引與前導列stockDatesalesDate然後執行索引交集(加入兩個結果),以獲得行匹配AND

+0

哎呀,我讀得太快,並認爲這兩個謂詞是同一列... –

0

他們是SARGable,但這不能保證您的索引將被使用。檢查執行計劃以查看是否使用了任何索引。這取決於你的表中的行數,索引碎片,統計數據等。

相關問題