首页 > 网络运维 > Linux/Mysql > 正文

SQLServer索引重建的方法

SQLServer索引重建的方法

索引重建是指用一种运行中的操作,来更新旧的索引,以便提高数据存取性能。尽管索引重建有助于提高性能,但它也增加了数据库系统的负担,因此在许多情况下,它都是伴随着一定的风险的。另外,重建索引也需要在一定程度上使用系统资源,常见的两个因素是存储空间和 CPU 负荷,不可忽视。SQL Server 索引重建有几种方式,包括 ALTER INDEX REBUILD 和 ALTER INDEX REORGANIZE 等操作,这里将重点介绍前者。

一、ALTER INDEX REBUILD

ALTER INDEX REBUILD 命令的主要目的是重建索引,以便在新页上排序现有的索引关键字,从而降低表碎片(聚集索引)或非聚集索引(非聚集索引)的数量,改善索引存取性能。

ALTER INDEX REBUILD 语句语法如下:

ALTER INDEX

{ { index_name |ALL }

ON table_name

REBUILD [PARTITION = { partition_number | ALL } ]

[ WITH ( [ [ , ]...n ] )

[ ONLINE | OFFLINE ] ]

其中的 index_option 可以是:

ALLOW_ROW_LOCKS = {ON | OFF }

ALLOW_PAGE_LOCKS = {ON | OFF }

IGNORE_DUP_KEY = {ON | OFF }

FILLFACTOR = fillfactor

SORT_IN_TEMPDB = {ON | OFF }

STATISTICS_NORECOMPUTE = {ON | OFF }

MAXDOP = max_degree_of_parallelism

例如,以下是 ALTER INDEX REBUILD 的一个示例:

ALTER INDEX IX_NAME

ON TABLE1

REBUILD

WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON)

这个命令将重建 TABLE1 表上的 IX_NAME 索引,并将 FILLFACTOR 选项设置为 80 ,SORT_IN_TEMPDB 选项设置为 ON 。

二、ALTER INDEX REORGANIZE

ALTER INDEX REORGANIZE 命令为一个既有的索引提供了一个更整洁的索引结构,而不会改变其关键字顺序或填充因子(FILLFACTOR)。与 ALTER INDEX REBUILD 相比,ALTER INDEX REORGANIZE 的执行速度会更快,查询结果也会更快 。

以下是 ALTER INDEX REORGANIZE 的语法:

ALTER INDEX index_name

ON table_name

REORGANIZE [PARTITION = partition_number]

] WITH ( LOB_COMPACTION = { ON | OFF } )

此外,我们可以通过 sp_rebuildindex 存储过程来重建或重组索引,它与 ALTER INDEX REBUILD 命令的功能相似,并提供了更多的调整参数,通过这些参数,可以控制进程的更新过程,如下所示:

EXEC sp_rebuildindex 'table_name', 'index_name', 0, 90, 'fillfactor'

其中,0 表示无时间限制,90 表示分配处理 90% 索引重建操作的 CPU 时间,fillfactor 表示指定 FILLFACTOR。如果不设置 FILLFACTOR,则默认使用表的填充因子,即使用 0 值 。

三、SQL Server 索引重建的建议

1. 需要调整 SQL Server 索引重建时,首先需要确定索引文件是否太大或表碎片多,以及索引为什么穿越性能低。

2. 在进行 ALTER INDEX REBUILD 时,如果表碎片过多,需要重新排序数据库表;不过,这取决于建立表的方式,在某些情况下,推荐重建非聚集索引。

3. 在进行 ALTER INDEX REORGANIZE 时,可以保持索引中的关键字顺序不变,此外,通过它还可以范围删除索引中的行。

4. 在 ALTER INDEX REBUILD 和 ALTER INDEX REORGANIZE 操作的时候,只有使用系统资源时,例如存储空间和 CPU 负荷,才会这么做,其他情况下,可以保留现有索引。

5. 在表较大时,建议在晚上,对相关表重建索引,以免影响用户正常使用,并且检查错误日志,记录使用系统资源的情况。

四、总结

以上就是关于SQL Server 索引重建的一些常用方法,索引重建有助于提高数据库性能,但是使用前要充分考虑,避免误操作,最大限度的保证数据的完整性和安全性。

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:http://www.atpbike.com/article/mysql/2864.html

相关推荐

支付宝
微信
赞助本站