SQL SERVER 2008 R2 重建索引的方法_mssql2008

参考sys.dm_db_index_physical_stats

检查索引碎片情况

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.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, ‘LIMITED')
8.WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;
9.
10.使用脚本中的 sys.dm_db_index_physical_stats 重新生成或重新组织索引 (来源于联机帮助)
11.
12.SET NOCOUNT ON;
13.DECLARE @objectid int;
14.DECLARE @indexid int;
15.DECLARE @partitioncount bigint;
16.DECLARE @schemaname nvarchar(130);
17.DECLARE @objectname nvarchar(130);
18.DECLARE @indexname nvarchar(130);
19.DECLARE @partitionnum bigint;
20.DECLARE @partitions bigint;
21.DECLARE @frag float;
22.DECLARE @command nvarchar(4000);
23.– Conditionally select tables and indexes from the sys.dm_db_index_physical_stats function
24.– and convert object and index IDs to names.
25.SELECT
26.object_id AS objectid,
27.index_id AS indexid,
28.partition_number AS partitionnum,
29.avg_fragmentation_in_percent AS frag
30.INTO #work_to_do
31.FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, ‘LIMITED')
32.WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;
33.– Declare the cursor for the list of partitions to be processed.
34.DECLARE partitions CURSOR FOR SELECT * FROM #work_to_do;
35.– Open the cursor.
36.OPEN partitions;
37.– Loop through the partitions.
38.WHILE (1=1)
39.BEGIN;
40.FETCH NEXT
41.FROM partitions
42.INTO @objectid, @indexid, @partitionnum, @frag;
43.IF @@FETCH_STATUS < 0 BREAK;
44.SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)
45.FROM sys.objects AS o
46.JOIN sys.schemas as s ON s.schema_id = o.schema_id
47.WHERE o.object_id = @objectid;
48.SELECT @indexname = QUOTENAME(name)
49.FROM sys.indexes
50.WHERE object_id = @objectid AND index_id = @indexid;
51.SELECT @partitioncount = count (*)
52.FROM sys.partitions
53.WHERE object_id = @objectid AND index_id = @indexid;
54.– 30 is an arbitrary decision point at which to switch between reorganizing and rebuilding.
55.IF @frag < 30.0
56.SET @command = N‘ALTER INDEX ‘ + @indexname + N‘ ON ‘ + @schemaname + N‘.' + @objectname + N‘ REORGANIZE';
57.IF @frag >= 30.0
58.SET @command = N‘ALTER INDEX ‘ + @indexname + N‘ ON ‘ + @schemaname + N‘.' + @objectname + N‘ REBUILD';
59.IF @partitioncount > 1
60.SET @command = @command + N‘ PARTITION=' + CAST(@partitionnum AS nvarchar(10));
61.EXEC (@command);
62.PRINT N‘Executed: ‘ + @command;
63.END;
64.– Close and deallocate the cursor.
65.CLOSE partitions;
66.DEALLOCATE partitions;
67.– Drop the temporary table.
68.DROP TABLE #work_to_do;
69.GO

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索重建索引
mssql重建所有索引、mssql重建索引、sqlserver重建索引、sql server 重建索引、mssqlserver2008 r2,以便于您获取更多的相关知识。

时间: 2024-11-10 10:13:13

SQL SERVER 2008 R2 重建索引的方法_mssql2008的相关文章

SQL Server 2008 R2 安装过程中出错的一种解决方法

可能是先装了vs2010,它会装部分与sql2008相关的东西,之后再装sql2008或sql2008r2版本,就可能会出错装不了.. 先下载:Total_Uninstall6.3.1,卸载sql2008或sql2008r2安装程序相关的文件,这个软件会卸载注册表中相关的东西: 下载地址: http://yunpan.cn/QbFmyhXqsusph (原来使用YourUninstaller去卸载,它不能删除相关的注册表里的东西) 另外的错误: 标题: Microsoft SQL Server

图文详解SQL Server 2008 R2安装配置方法_mssql2008

安装sql server2008 R2的方法,轻松简单易操作,按照操作一步一步来. 工具: sql server 2008 R2安装包一个(从网上下载) 方法/步骤: 安装包解压 解压后,打开setup.exe文件,选择安装,显示如图: 选择全新安装或向现有安装添加功能 点确定 输入 企业版序列号:R88PF-GMCFT-KM2KR-4R7GB-43K4B 点我接受许可条款,点下一步 点安装,如果操作系统没有安装.net framet3.5 sp1 ,将会自动安装. 必备环境全部通过后,点下一步

SQL Server 2008 R2登录失败的解决方法

为大家分享SQL Server 2008 R2登录失败的解决方法 1.启动SQL Server 2008 Management Studio,会看到 2.里面有一个 身份验证.这个 身份验证 的下拉列表里面有两个选项: Windows 身份验证 和 SQL Server 身份验证. 它们有什么区别: Windows 身份验证是指:你可以使用你电脑Windows系统的用户名和密码进行登入.如果你的电脑没有设置密码,那么就不需要输入用户名和密码,直接点击连接就可以登入. 我们一般使用第二种身份验证:

SQL Server 2008 R2安装配置方法图文教程_mssql2008

Microsoft SQL Server 2008 R2安装图解 工具: SQL Server 2008 R2安装光盘或镜像ISO 安装的准备过程: 插入2008 R2安装光盘或加载镜像ISO文件,进入SQL Server安装中心后跳过"计划"内容,直接选择界面左侧列表中的"安装" 之后进入"安装程序支持规则"安装界面,安装程序将自动检测安装环境基本支持情况,需要保证通过所有条件后才能进行下面的安装,如图所示.当完成所有检测后,点击"确

SQL Server 2008的升级与部署方法和常见问题

SQL Server 2008的升级与部署方法和常见问题: Q:现在我所在的公司正在使用SQL 2005这个版本,那么SQL 从05升级到SQL 08的PDS(数据保护系统)过程中,我们最好选择什么方法呢?那么在升级到SQL 08后,SSIS(生成高性能数据集成解决方案平台)会不会有所提高呢? A:其实从SQL 2000里面的DPS升级到SQL 2005里面的DPS升级是一样的,我们推荐的方法仍然是重写,因为SQL 2005跟SQL 2008的引擎基本上类似.但是这两个版本跟SQL 2000完全

SQL Server 2008 R2 性能计数器详细列表(三)

原文:SQL Server 2008 R2 性能计数器详细列表(三) SQL Server,Deprecated Features 对象: 监视指定为不推荐使用的功能: SQL Server Deprecated Features 计数器实例 说明 "#"和"##"作为临时表和存储过程的名称 遇到不包含 # 以外的任何字符的标识符.请至少使用一个其他字符.每次编译时发生. "::"函数调用语法 表值函数遇到 :: 函数调用语法.请替换为 SELE

SQL Server 2008 R2 性能计数器详细列表(一)

原文:SQL Server 2008 R2 性能计数器详细列表(一) SQL Server Backup Device 计数器: 可监视用于备份和还原操作的 Microsoft SQL Server 备份设备 SQL Server Backup Device 计数器 说明 Device Throughput Bytes/sec 一个备份设备在备份或还原数据库时所用的读写操作的吞吐量(以每秒字节数表示).这一计数器只有在备份或还原操作执行时才存在. SQL Server Access Method

让SQL Server 2008 R2在查询时输出信息

环境:SQLServer 2008 R2 问题:在查询时输出信息 解决: 一:使用print函数. 如: print 'HelloWorld'; 当然,print函数不仅能够打印字符串,还可以打印整型数据或者浮点型数据. 如: print 27; print 39.27; print 0.11111111111111111111; 二:变通的方法,通过系统表查询获得输出信息. select * from sysobjects; select 'HelloWorld' from sysobject

安装SQL Server 2008 R2和Visual Studio 2010时的1406错误解决

问题描述:重新安装的系统,然后马上升级到Windows7旗舰版,在安装SQL Server 2008 R2和Visual Studio 2010时遇到1406错误.尝试了很多方法,比如修改对应注册表的权限.重置注册表.安装更新等等. 又细想是否是系统的原因,于是又重新还原系统,保持Windows7家庭普通版.后来又考虑了许久,才想到解决 办法.其实很简单,稍后奉上. 问题如图: SQL Server 2008 R2安装错误: Visual Studio 2010旗舰版安装错误: 解决: 没有足够