码迷,mamicode.com
首页 > 数据库 > 详细

Tsql Create Index 需要考虑的问题

时间:2015-10-10 21:34:35      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

在大表上创建索引要非常谨慎,糟糕的索引会导致性能问题,但设计良好的索引可以几十倍上百倍的提高查询性能,在创建索引时,需要注意几个问题

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

Tsql Create Index 需要考虑的问题

标签:

原文地址:http://www.cnblogs.com/ljhdo/p/4846913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!