聚簇索引的侯選列是
主鍵列該列在where子句中使用並且插入是隨機的
按范圍存取的列如pri_order > and pri_order <
在group by或order by中使用的列
不經常修改的列
在連接操作中使用的列
二非聚簇索引(nonclustered indexes)的使用
SQL Server缺省情況下建立的索引是非聚簇索引由於非聚簇索引不重新組織表中的數據而是對每一行存儲索引列值並用一個指針指向數據所在的頁面換句話說非聚簇索引具有在索引結構和數據本身之間的一個額外級一個表如果沒有聚簇索引時可有個非聚簇索引每個非聚簇索引提供訪問數據的不同排序順序在建立非聚簇索引時要權衡索引對查詢速度的加快與降低修改速度之間的利弊另外還要考慮這些問題
索引需要使用多少空間
合適的列是否穩定
索引鍵是如何選擇的掃描效果是否更佳
是否有許多重復值
對更新頻繁的表來說表上的非聚簇索引比聚簇索引和根本沒有索引需要更多的額外開銷對移到新頁的每一行而言指向該數據的每個非聚簇索引的頁級行也必須更新有時可能還需要索引頁的分理從一個頁面刪除數據的進程也會有類似的開銷另外刪除進程還必須把數據移到頁面上部以保證數據的連續性所以建立非聚簇索引要非常慎重非聚簇索引常被用在以下情況
某列常用於集合函數(如Sum…)
某列常用於joinorder bygroup by
查尋出的數據不超過表中數據量的%
[] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22521.html