环境:Sql Server 2008
合理的索引设计要建立在对各种查询的分析和预测上。一般来说:
1. 有大量重复值、且经常有范围查询(between, > , < ,> =, < =)和order by、group by发生的列,
可考虑建立群集索引;
2. 经常同时存取多列,且每列都含有重复值可考虑建立组合索引;
3. 组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。
4. 对于查询中很少涉及的列或者重复值比较多的列,不要建立索引。
5. 对于按范围查询的列,最好建立索引。不过,若虽然可能需要按范围来进行查询,但是,若这个范围查询条件利用的不多的情
况下,最好不好采用索引。
6. 表中若有主键或者外键,一定要为其建立索引,可以加快连接的速度。
7. 索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
8. 不要索引常用的小型表。
9. 通常的情况下不要选择用户可编辑的字段作为键。
10.在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
11.对于那些只有很少数据值的列也不应该增加索引。
12.频繁进行数据操作的表,不要建立太多的索引,当修改性能远远大于检索性能时,不应该创建索引。
13.数据量超过500的表应该有索引。
14.经常与其他表进行连接的表,在连接字段上应该建立索引。
15.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引。
16.索引应该建在选择性高的字段上。
17.复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替。复合索引的几个字段是否经常同时以AND方式出现在
Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引,否则考虑单字段索引。如果复合索引中
包含的字段经常单独出现在Where子句中,则分解为多个单字段索引。如果复合索引所包含的字段超过3个,那么仔细
考虑其必要性,考虑减少复合的字段。构成复合索引的列的总长度不能超过900字节。创建复合索引时,应该仔细考虑列的顺序。
对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处。
18.如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引。
19.当需要以多种方式检索数据时,非聚簇索引是非常有用的。