Sql-Server
索引交點是否適用於包含的列?
一位報表設計者曾問我,是否可以為表添加新索引以加快特定報表的速度。該索引將位於單個列 CreatedDate 上,但會包含列。
表上已經有五個索引,我想避免為特定報告或查詢創建單獨的索引。但是,我認為單列索引可能在索引交集中很有用,特別是在可能用於多個查詢的列上,例如 CreatedDate。
為了幫助我做出決定,我想知道是否可以在索引交集中使用包含列的索引,或者包含列是否會阻止索引用於索引交集。
我試過用Google搜尋這個問題,但沒有找到任何關於包含列對索引交集的影響的資訊。
包含的列不會阻止索引用於任何目的。
查詢優化器將選擇對正在編譯的查詢最有效的最佳索引(或者可能是表掃描)。保持索引盡可能小,同時仍提供所需的功能。根據Books Online INCLUDEd 列不會影響查詢優化器嚴格根據大小選擇索引,但是如果任何給定索引具有查詢所需的所有列,無論是作為鍵列還是包含列,該索引將被優先考慮。
由於查詢優化器是一個相當不透明的野獸,您很可能需要測試建議的索引以查看它是否被使用,以及由此產生的對 INSERT、UPDATE 和 DELETE 的影響。