聚簇索引的侯选列是
主键列该列在where子句中使用并且插入是随机的
按范围存取的列如pri_order > and pri_order <
在group by或order by中使用的列
不经常修改的列
在连接操作中使用的列
二非聚簇索引(nonclustered indexes)的使用
SQL Server缺省情况下建立的索引是非聚簇索引由于非聚簇索引不重新组织表中的数据而是对每一行存储索引列值并用一个指针指向数据所在的页面换句话说非聚簇索引具有在索引结构和数据本身之间的一个额外级一个表如果没有聚簇索引时可有个非聚簇索引每个非聚簇索引提供访问数据的不同排序顺序在建立非聚簇索引时要权衡索引对查询速度的加快与降低修改速度之间的利弊另外还要考虑这些问题
索引需要使用多少空间
合适的列是否稳定
索引键是如何选择的扫描效果是否更佳
是否有许多重复值
对更新频繁的表来说表上的非聚簇索引比聚簇索引和根本没有索引需要更多的额外开销对移到新页的每一行而言指向该数据的每个非聚簇索引的页级行也必须更新有时可能还需要索引页的分理从一个页面删除数据的进程也会有类似的开销另外删除进程还必须把数据移到页面上部以保证数据的连续性所以建立非聚簇索引要非常慎重非聚簇索引常被用在以下情况
某列常用于集合函数(如Sum…)
某列常用于joinorder bygroup by
查寻出的数据不超过表中数据量的%
[] [] [] [] [] []