WEB开发网
开发学院数据库MSSQL Server SQL Server索引的使用和优化 阅读

SQL Server索引的使用和优化

 2006-08-05 09:14:46 来源:WEB开发网   
核心提示: 3、在一个频繁发生插入操作的表上建立聚簇索引时,不要建在具有单调上升值的列(如IDENTITY)上,SQL Server索引的使用和优化(2),否则会经常引起封锁冲突,4、在聚簇索引中不要包含经常修改的列,以保证数据的连续性,所以,因为码值修改后,数据行必须移动到新的位置

3、在一个频繁发生插入操作的表上建立聚簇索引时,不要建在具有单调上升值的列(如IDENTITY)上,否则会经常引起封锁冲突。

4、在聚簇索引中不要包含经常修改的列,因为码值修改后,数据行必须移动到新的位置。

5、选择聚簇索引应基于where子句和连接操作的类型。聚簇索引的侯选列是:

1、主键列,该列在where子句中使用并且插入是随机的。

2、按范围存取的列,如pri_order > 100 and pri_order < 200。

3、在group by或order by中使用的列。

4、不经常修改的列。

5、在连接操作中使用的列。

二、非聚簇索引(nonclustered indexes)的使用

SQL Server缺省情况下建立的索引是非聚簇索引,由于非聚簇索引不重新组织表中的数据,而是对每一行存储索引列值并用一个指针指向数据所在的页面。换句话说非聚簇索引具有在索引结构和数据本身之间的一个额外级。一个表如果没有聚簇索引时,可有250个非聚簇索引。每个非聚簇索引提供访问数据的不同排序顺序。在建立非聚簇索引时,要权衡索引对查询速度的加快与降低修改速度之间的利弊。另外,还要考虑这些问题:

1、索引需要使用多少空间。

2、合适的列是否稳定。

3、索引键是如何选择的,扫描效果是否更佳。

4、是否有许多重复值。

对更新频繁的表来说,表上的非聚簇索引比聚簇索引和根本没有索引需要更多的额外开销。对移到新页的每一行而言,指向该数据的每个非聚簇索引的页级行也必须更新,有时可能还需要索引页的分理。从一个页面删除数据的进程也会有类似的开销,另外,删除进程还必须把数据移到页面上部,以保证数据的连续性。所以,建立非聚簇索引要非常慎重。非聚簇索引常被用在以下情况:

上一页  1 2 3 4 5  下一页

Tags:SQL Server 索引

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接