解决SQL Server 表或索引的碎片问题
对表进行长期的修改或删除会产生大量的碎片,影响数据库性能。解决办法就是把表或索引重建,消除碎片,达到优化的目的。 直接上代码: /*查询碎片,avg_fragmentation_in_percent就是索引占的百分比,大于30都是不正常的,需要重建*/ DECLARE @db_id int; DE
对表进行长期的修改或删除会产生大量的碎片,影响数据库性能。解决办法就是把表或索引重建,消除碎片,达到优化的目的。
直接上代码:
/*查询碎片,avg_fragmentation_in_percent就是索引占的百分比,大于30都是不正常的,,需要重建*/
DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks2008R2');
SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.Person.Address');
IF @db_id IS NULL
BEGIN;
PRINT N'Invalid database';
END;
ELSE IF @object_id IS NULL
BEGIN;
PRINT N'Invalid object';
END;
ELSE
BEGIN;
SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
END;
GO
/*重建表*/
alter table rebuild
/*重建索引*/
alter index ON rebuild
上一篇: 有Oracle特色的sql语句整理
下一篇: 数据库sql select查询的工作原理
推荐阅读
-
sql索引碎片产生的原理 解决碎片的办法(sql碎片整理)
-
MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理
-
在SQL SERVER中导致索引查找变成索引扫描的问题分析
-
sql server 索引阐述系列三 表的堆组织
-
SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题
-
完美解决SQL server2005中插入汉字变成问号的问题
-
SQL Server2005打开数据表中的XML内容时报错的解决办法
-
SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法
-
SQL Server 数据库调整表中列的顺序操作方法及遇到问题
-
安装SQL Server 2016出错提示:需要安装oracle JRE7 更新 51(64位)或更高版本问题的解决方法