`

索引的碎片整理SQL语句

sql 
阅读更多
SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片整理
SET @maxfrag = 30.0
CREATE TABLE #fraglist (
ObjectName CHAR (255),
ObjectId INT,
IndexName CHAR (255),
IndexId INT,
Lvl INT,
CountPages INT,
CountRows INT,
MinRecSize INT,
MaxRecSize INT,
AvgRecSize INT,
ForRecCount INT,
Extents INT,
ExtentSwitches INT,
AvgFreeBytes INT,
AvgPageDensity INT,
ScanDensity DECIMAL,
BestCount INT,
ActualCount INT,
LogicalFrag DECIMAL,
ExtentFrag DECIMAL)

--获取当前数据库中所有数据表的索引碎片信息,并保存到临时表
DECLARE tables CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
OPEN tables
FETCH NEXT FROM tables INTO @tablename
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO #fraglist 
EXEC ('DBCC SHOWCONTIG (''' + @tablename + ''') 
WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS')
FETCH NEXT FROM tables INTO @tablename
END
CLOSE tables
DEALLOCATE tables
/*
ObjectName:数据表名称
IndexId:索引ID
LogicalFrag:逻辑碎片值
*/
DECLARE indexes CURSOR FOR SELECT ObjectName, ObjectId, IndexId, LogicalFrag FROM #fraglist
WHERE LogicalFrag >= @maxfrag
AND INDEXPROPERTY (ObjectId, IndexName, 'IndexDepth') > 0
OPEN indexes
FETCH NEXT FROM indexes INTO @tablename, @objectid, @indexid, @frag
WHILE @@FETCH_STATUS = 0 BEGIN

PRINT '正在执行 DBCC INDEXDEFRAG (0, ' + RTRIM(@tablename) + ',
' + RTRIM(@indexid) + ') - fragmentation currently '
+ RTRIM(CONVERT(varchar(15),@frag)) + '%'
--执行索引碎片整理
SELECT @execstr = 'DBCC INDEXDEFRAG (0, ' + RTRIM(@objectid) + ', ' + RTRIM(@indexid) + ')'
EXEC (@execstr)
FETCH NEXT FROM indexes INTO @tablename, @objectid, @indexid, @frag
END
CLOSE indexes
DEALLOCATE indexes
DROP TABLE #fraglist
GO

 

分享到:
评论

相关推荐

    SQLServer索引碎片和解决方法

    SQLServer索引碎片和解决方法,提供相关样例查看索引碎片和解决方法

    Oracle DBA 常用的一些SQL语句(50个)

    查看某个进程正在执行什么SQL语句.sql 查看用户表所占空间的大小.sql 查看系统SGA区状态.sql 查看系统中使用了哪些设备文件.sql 查看系统中每个表空间的使用情况.sql 查看系统中每个表空间的大小.sql 查看系统联接数...

    SQL Server 索引维护sql语句

    使用以下脚本查看数据库索引碎片的大小情况: 代码如下:DBCC SHOWCONTIG WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS 以下使用脚本来处理维护作业: 代码如下:/*Perform a ‘USE ’ to select the database ...

    Sql Server 索引使用情况及优化的相关Sql语句分享

    代码如下: –Begin Index(索引) 分析优化的相关 Sql — 返回当前数据库所有碎片率大于25%的索引 — 运行本语句会扫描很多数据页面 — 避免在系统负载比较高时运行 — 避免在系统负载比较高时运行 declare @dbid int ...

    sqlserver常用sql

    死锁的诊断和定位 查询阻塞的语句 查询执行较慢的语句 查询正在执行的语句1 ...查询索引碎片 查询数据库文件大小 修改max degree of parallelism 修改SQLServer最大内存 用DAC连接到SQL Server 其它SQL DBCC

    Oracle性能监控SQL语句

    1.分析表 2.监控事例的等待 3.查看碎片程度高的表 4.找使用CPU多的用户session 5.回滚段的争用情况 6.在某个用户下找所有的索引 7..... etc.

    SQL查询安全性及性能优化

    注意:在检测之前要清理缓存,因为当我们执行SQL语句的时候查出的数据会在数据库中进行缓存,重新查询会返回缓存中的信息。 DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE 经验:使用子查询嵌套不要过多,尽量使用表...

    SQL SERVER 2008 R2 重建索引的方法

    检查索引碎片情况 1.SELECT 2.OBJECT_NAME(object_id) as objectname, 3.object_id AS objectid, 4.index_id AS indexid, 5.partition_number AS partitionnum, 6.avg_fragmentation_in_percent AS fra 7.FROM sys....

    sqlserver 一堆学习文档

    Oracle和SqlServer系统表操作差异对比.docx SQL_Server2005索引碎片分析和解决方法.doc SQLSERVER存储过程大总结.doc SQL中各种索引.docx 看懂SqlServer查询计划 .docx 经典SQL语句大全.doc

    Devart dbForge Studio for SQL Server Enterprise 破解版

     快速收集索引碎片统计信息并检测需要维护的数据库。  实现数据库单元测试  基于tSQLt框架实现自动单元测试。  在几次点击中生成有意义的测试数据  内置数据生成器允许您使用数十万有意义的测试数据填充空...

    最新 Devart dbForge Studio for SQL Server Enterprise 5.5破解版

    获取索引碎片索引 快速收集索引碎片统计信息并检测需要维护的数据库。 实现数据库单元测试 基于tSQLt框架实现自动单元测试。 在几次点击中生成有意义的测试数据 内置数据生成器允许您使用数十万有意义的测试数据...

    Devart dbForge Studio for SQL Server v5.2.177 Enterprise.和谐版

     快速收集索引碎片统计信息并检测需要维护的数据库。  实现数据库单元测试  基于tSQLt框架实现自动单元测试。  在几次点击中生成有意义的测试数据  内置数据生成器允许您使用数十万有意义的测试数据填充空...

    SQL Server 2008编程入门经典(第3版)

    第3章 T-SQL基本语句 3.1 基本SELECT语句 3.1.1 SELECT语句与FROM子句 3.1.2 WHERE子句 3.1.3 ORDERBY子句 3.1.4 使用GROUPBY子句聚合数据 3.1.5 使用HAVING子句给分组设置条件 3.1.6 使用FORXML子句输出XML 3.1.7 ...

    Devart dbForge Studio for SQL Server v5.2.177 Enterprise 破解版

    获取索引碎片索引 快速收集索引碎片统计信息并检测需要维护的数据库。 实现数据库单元测试 基于tSQLt框架实现自动单元测试。 在几次点击中生成有意义的测试数据 内置数据生成器允许您使用数十万有意义的测试数据...

    SQLServer2008查询性能优化 2/2

    书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...

    SQLServer2008查询性能优化 1/2

    书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    第9章 SQLServer存储和索引结构 9.1 SQLServer存储机制 9.1.1 数据库 9.1.2 区段 9.1.3 页 9.1.4 行 9.1.5 稀疏列 9.2 理解索引 9.2.1 平衡树(B.树) 9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 ...

    深入解析DB2--高级管理,内部体系结构与诊断案例.part1.rar

    11.1 通过监控找出最消耗资源的SQL语句 11.2 通过解释工具分析SQL语句执行计划 11.3 理解SQL语句如何工作 11.4 SQL调优案例 11.5 提高应用程序性能 第12章 DB2调优案例、问题总结和技巧 12.1 调优案例一:某移动公司...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    第9章 SQLServer存储和索引结构 9.1 SQLServer存储机制 9.1.1 数据库 9.1.2 区段 9.1.3 页 9.1.4 行 9.1.5 稀疏列 9.2 理解索引 9.2.1 平衡树(B.树) 9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 ...

Global site tag (gtag.js) - Google Analytics