2017-01-23 133 views
0

我已經完成了一些四處搜尋試圖瞭解索引的信息。能夠從布倫特奧扎爾的網站學到很多,但有一個後續問題。具有多個字段或多個索引的索引

在布倫特的關於sargabliity的視頻中,他提到如果列在where子句中,那麼它需要是索引中的第一列。我的問題是,如果where子句具有來自同一個表的多個列,那麼應該是一個索引,其中的列按照where子句的順序列出,還是每個列都有自己的索引?

這些表格每天更新一次,包含大約1000萬條記錄。

我使用SQL Server 2012的

回答

1

此基礎上查詢,這兩個不同的索引就會大大不同。

,如果你有WHERE子句在這兩個領域,

如果你有一個綜合指數(在一個索引2場),SQL服務器 將使用下面的計劃,這是非常快的。

Composite Index Plan

如果您對每個場2個獨立的指數,SQL Server使用 不同的計劃(慢得多以上)

Separate Index Plan

正如你看到的它會在不同的線程中找到每個數據集,然後合併它們。

儘管您可能會根據您的數據得到不同的計劃,但這是SQL Server的一般行爲。

+0

完美謝謝你的幫助 –