在創建索引視圖之後,我嘗試禁用基表中的所有索引,包括外鍵列的索引(約束仍然存在),視圖的查詢計劃保持不變。索引視圖的索引基表有益嗎?
它就像魔術對我來說,索引視圖將能夠如此多的優化查詢,即使沒有被索引的基表。即使在視圖上沒有任何索引,SQL Server也能夠對索引視圖的主鍵索引執行索引掃描,以獲取比使用基錶快1000倍的數據。
喜歡的東西SELECT * FROM MyView WITH(NOEXPAND) WHERE NotIndexedColumn = 5 ORDER BY NotIndexedColumn
所以前兩個問題是:
- 是否有索引視圖索引基表什麼好處?
- 當約束位於未索引列時,Sql服務器在對PK進行索引掃描時做了什麼?
然後我注意到,如果我使用全文搜索+訂單,我會在查詢計劃中看到一個表假脫機(熱衷假脫機),成本爲95%。
查詢看起來像SELECT ID FROM View WITH(NOEXPAND) WHERE CONTAINS(IndexedColumn, '"SomeText*"') ORDER BY IndexedColumn
問題N°3:
- 有沒有我可以添加到擺脫任何操作指數?
檢查閱讀更深入的這樣的回答:HTTP://stackoverflow.com/questions/40677421/how-is-blob-stored-in-an-indexed-view/40678073# 40678073 – TheGameiswar
@TheGameiswar從我已閱讀的索引視圖只存儲結果的部分子集,而不是100%重複。所以即時通訊仍然好奇,看看是否有任何好處索引原始表 – Steve