2017-05-03 85 views
2

各自的相對優點是什麼?兩者似乎都限制了查詢需要通過的行數和列數,所以決定選擇哪一個的基礎是什麼?SQL Server:篩選索引與索引視圖

+0

*過濾指數*需要一個非常簡單的*條件*是可能的,而一個*索引視圖*有前提條件的相當廣泛,一長串要得到滿足。索引視圖也不是關於減少行數 - 而是加速(大多數'SELECT')針對該視圖的查詢是否持續並索引視圖顯示的數據 –

回答

3

索引視圖

  • 可以包括基於表達式的列。

  • 可以包含多個表的連接。

  • 可以在用戶SQL語句中直接引用。

  • 允許所有確定性表達式

  • 具有複雜的先決條件,但是簡單和一致的使用(SELECT * FROM [indexedview])

filtered index

  • 是僅限於表格中包含的列。

  • 只允許簡單的過濾器表達式。

  • 實現起來很簡單,但優化器會在查詢基表時確定使用是否合適。

它們都不能使用非確定性表達式。

0

索引視圖:

i)我必須從多個表中得到結果。

ii)我在此視圖上創建索引以提高性能。

篩選索引:

i)單表中有很多記錄。

ii)一個特定的條件與特定的值包含大量的記錄。並且這種情況將會非常頻繁地使用。或者這種情況將用於非常重要的查詢,其中性能是最重要的。 在這種情況下,我們可以在表格上創建過濾索引。

檢查我的答案例如

MS SQL Server 2008 - UPDATE a large database