标签:
在大表上创建索引要非常谨慎,糟糕的索引会导致性能问题,但设计良好的索引可以几十倍上百倍的提高查询性能,在创建索引时,需要注意几个问题
1,索引类型
创建聚集索引会使表数据在物理上排序,在创建非聚集索引之前,最好创建聚集索引,如果是临时表且只存在一个索引,那么create clustered index最好。
2,索引列的顺序
根据查询条件中列的使用情况合理安排索引列的顺序,如果一个索引的位于前面的列没有作为查询条件,那么这个索引不仅不会提高查询性能,而且会影响表的更新。
在复合索引中,记录首先按照第一个字段排序。对于在第一个字段上取值相同的记录,再按照第二个字段的取值排序,以此类推。因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用,因此将应用频度高的字段,放置在复合索引的前面,会使系统最大可能地使用此索引,发挥索引的作用。
为经常出现在关键字order by、group by、distinct后面的字段建立索引,如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
3,过滤索引
4,包含列
包含列不用于查询条件,只用于返回数据,可以使索引页的非叶子节点占用的空间更小,包含列存储在叶子节点中,能够返回包含列的数据而不到源表进行key
lookup。
5,索引压缩
6,分区索引
create table dbo.test ( id int, ps_id int, code int, txt varchar(10) ) create clustered index [IX_test_ID] ON dbo.test ( id asc ) include(code) where id in(1,2) with(data_compression=page,online=off) on [partitionscheme](ps_id)
参照文档
https://msdn.microsoft.com/zh-cn/library/ms188783.aspx
标签:
原文地址:http://www.cnblogs.com/ljhdo/p/4846913.html