MSSQL中如何有效创建索引,以及合理使用索引?

0
已邀请:
1

gogodiy - 天善智能数据库专家、Tableau爱好者 2013-07-09 回答

1.有大量重复值、且经常有范围查询(between, >, < ,>=, < =)和order by 、group by发生的列,可考虑建立聚集索引。
2.经常同时存取多列,且每列都含有重复值可考虑建立组合索引。
3.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。
4.在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。

查询设计建议:
1.检查WHERE子句和连接条件列——在WHERE子句或连接条件中频繁使用的列上有索引将帮助优化器避免基本表的扫描。
2.使用窄索引——
SELECT *
FROM sys.indexes
查询索引信息,每个数据库都有会这张系统表。
索引长度为900个字节,因此尽可能使用长度短的数据类型。
3.检查列的唯一性——在一个有非常高的选择性的列(或一组列)上创建索引(也就是重复值很少的列)。
4.检查列的数据类型
5.考虑列顺序——通常就是SELECT后面列的顺序、WHERE子句后面列的顺序,与复合索引列的顺序一致。
6.考虑索引类型(聚集VS非聚集)
0

TravyLee - 尼玛!这哪是下雨,分明就是有人在泼水! 2013-07-09 回答


想要创建合适的索引那就首先得了解聚集索引和费非集索引的区别以及他们的特征,再结合自己的实际生产环境来决定,而不是单纯的问怎么创建合适的索引。此外,索引对数据的查询的确有利,但是对数据的写是有负面影响的,会增加开销,在建立索引之前还得权衡这样的索引到底值不值。

要回复问题请先登录注册