数据库一些数据表数据量剧增之后,比如超100W行,查询效率会有所降低,就犹如硬盘多了很多碎片一样。
适当地进行表索引重建,可以提升查询效率。
下面是对数据库所有表进行表索引重建,请在无人使用数据库时使用:
DECLARE @TABLE VARCHAR(100) DECLARE CURT CURSOR FOR SELECT [NAME] FROM SYSOBJECTS WHERE XTYPE='U' ORDER BY ID OPEN CURT FETCH NEXT FROM CURT INTO @TABLE WHILE @@FETCH_STATUS = 0 BEGIN --参数1是表名。 --参数2指定索引名称,空表所有。 --参数3就填充因子,是指索引页的数据填充程度。 --0表示使用先前的值,100表示每个索引页都填满,这时查询效率最高,但插入索引时会移动其它索引,可根据实际情况来设置。 DBCC DBREINDEX (@TABLE, '', 90) FETCH NEXT FROM CURT INTO @TABLE END CLOSE CURT DEALLOCATE CURT