3.4 重新生成索引任务
重新生成索引任务(Rebuild Index Task)旨在通过重新组织数据库中所有的表索引而清除碎片
。此任务对于确保查询性能和应用程序响应不会退化非常有用
。因此
,当需要对
SQL执行索引扫描和查找的时候
,系统运行会非常顺畅。另外,此任务能够
优化数据和可用
空间的再索引页的分配,使数据库增长更加快速。
对于可用
空间,重新生成索引任务包含以下两个选项:
采用默认可用空间大小来重新组织索引页——删除数据库里的表索引,并重新生成索引,生成索引的同时就指定填充因子(fill factor)的值。
改变每个索引页的可用空间比例——删除数据库里的表索引,并指定一个自动计算得到的新填充因子值来重新生成索引,因此能够保留索引页上指定的有用空间大小。填充因子的有效值范围从0到100,数值越大,索引页上保留的有用空间就越多,索引就可以增长得越大。
重新生成索引的高级选项包括:
指定是否在tempdb中存储排序结果——这是重新生成索引的第一个高级选项,相当于索引中的SORT_IN_TEMPDB选项,如果激活这个选项,那么中间排序结果将会在重新生成索引的过程中存储到tempdb中。
指定重新生成索引操作中是否保持索引联机——如果设置值为ON,那么这个选项允许用户在重新生成索引操作过程中对基础表、聚集索引数据和相关联的索引进行查询和数据修改操作。
为了更深入了解这个任务,下面举一个T
SQL语法实例用来重新生成与AdventureWorks 数据库中的[Sales]. [SalesOrderDetail]表关联的索引,例子中采用默认可用空间大小选项,同时将排序结果存储在tempdb中,并在操作过程中保持索引联机:
USE [AdventureWorks]
GO
ALTER INDEX [AK_SalesOrderDetail_rowguid]
ON [Sales].[SalesOrderDetail]
REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF, ONLINE = ON )
GO
USE [AdventureWorks]
GO
ALTER INDEX [IX_SalesOrderDetail_ProductID]
ON [Sales].[SalesOrderDetail]
REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, ONLINE = ON )
GO
USE [AdventureWorks]
GO
ALTER INDEX [PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID]
ON [Sales].[SalesOrderDetail]
REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, ONLINE = ON )
3.5 更新统计信息任务
更新统计信息任务(pdate Statistics Task)通过对用户表创建的每个索引统计信息分布进行重新抽样,以确保在一个或多个SQL Server数据库内表和索引中的数据都是最新的。
此任务的选项有很多,下面为您一一介绍:
数据库——首先选择受此任务影响的数据库。这个选项范围包括所有数据库、所有系统数据库、所有用户数据库或指定数据库。
对象——选择完数据库后,就该在对象框中选择限定显示表、显示视图还是两者同时显示。
选择——选择受此任务影响的表或索引。如果在对象框中选择了同时显示表和视图选项的话,此选项不可用。
更新——“更新”框提供了三个选项。如果需要更新列和索引的统计信息那就选择全部现有统