一、了解什么是索引
1、索引的概念:索引是一个数据结构,它会对表中的一列或多列的值进行排序,以便更快地搜索表中的行。将索引添加到表会极大地提高查询速度。
2、索引的分类:聚集索引和非聚集索引。聚集索引决定了表中行的物理排序方式,一个表只有一个聚集索引;非聚集索引则是在一个单独的结构中维护表中行的排序方式,一个表可以有多个非聚集索引。
3、索引的创建方式:CREATE INDEX 语句或者在SQL Server Management Studio 中使用图形界面来创建。
二、重建索引的目的
1、删除过大的或废弃的索引:把它们删除可以提升查询速度。
2、恢复索引的填充率:重复更新和删除操作会导致索引里的空间浪费,此时就需要重新构建索引,缩小索引文件,这样IO操作就会提升。
3、修改索引的结构:例如添加、删除或修改索引的列。
三、重建索引的策略
1、要根据每个表的大小、查询频率等不同情况来决定需要重建索引的频率。
2、对于小型数据库,每天可以重建一次;对于中型数据库,每周一次;对于大型数据库,每月一次。
3、在重建索引的时候,可以先复制一份表,对复制后的表进行调整,并在完成后覆盖原始表。
四、如何重建索引
1、通过SQL Server Management Studio来重建。
USE [AdventureWorks] GO ALTER INDEX [PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID] ON [Sales].[SalesOrderDetail] REBUILD GO
2、通过使用SQL Server Transact-SQL语句来重建。
USE AdventureWorks2012 ; GO ALTER INDEX ALL ON Production.Product REBUILD ; GO
3、使用SQL Server Profiler来监控SQL Server处理的活动。
五、重建索引的负面影响
1、资源消耗方面:在重建索引的时候,会造成大量的磁盘输入/输出操作,使得CPU占用率飙升,内存释放时间增加,IO宽带的要求陡然增高。
2、程序运行方面:由于此时计算机的资源被占用,其他操作和程序可能会变得比较缓慢。
3、对于OLTP系统,重建索引需要有足够的空间进行操作,如没有足够的磁盘空间,可能会导致错误或中断索引重建的操作。
六、总结
通过sqlserver重建索引,可以优化数据库的性能,但也需要在性能和资源消耗之间进行权衡。在具体的操作中,应根据实际情况选择操作方式和时间。