SQL 裡面最重要的觀念之一,就是索引。
今天來提提索引中重要的兩個項目。
就算資料表有建立非叢集索引,在沒有包含建立其它欄位的資料時,如果仍要透過索引以外的欄位查詢,Query Optimizer 可能會改用「資料表掃描 (Table Scan)」,而非利用「非叢集索引」。
如果透過資料表提示強制使用「非叢集索引」,會因為需要額外的 RID 查閱 (或索引鍵查閱),導致查詢成本提高很多 (還會多出「巢狀迴圈」運算子)。
索引交集 (Index Intersection):在 Where 條件中,同時使用到不同索引的「鍵值資料行」,並進行搜尋 (Seek)。
複合索引 (Composite Indexes):只要是由多個資料行所組成的索引「鍵值資料行」的索引,皆稱之為「複合索引」。
篩選索引 (Filtered Indexes):先透過 Where 條件篩選資料,再依據「鍵值資料行」來建置索引,因此大小比一般的索引還小。
索引檢視表 (Indexed Views):把查詢所得的資料當成一個真實的資料表儲存。
改寫自:SQL Server 效能調校 / 陳祥輝,陳臆如,黃浩著 / 博碩文化 / 2014,ISBN 978-986-201-902-3