标签归档:索引重建

mssql sqlserver 如何重新数据库索引呢?


下文通过举例的方式讲述使用sql脚本重建数据库索引的方法分享,如下所示:
实验环境:sql server 2008 R2



一、使用sql脚本检索出消耗CPU时间最多的sql脚本,然后查阅此sql脚本所对应的数据表的索引情况

 SELECT creation_time N'脚本编译耗时'
,last_execution_time N'脚本上次执行时间'
,total_physical_reads N'脚本物理读取总次数'
,total_logical_reads/execution_count N'脚本每次逻辑读次数'
,total_logical_reads N'脚本逻辑读取总次数'
,total_logical_writes N'脚本逻辑写入总次数'
, execution_count N'脚本执行总次数'
, total_worker_time/1000 N'脚本所用的CPU总时间ms'
, total_elapsed_time/1000 N'脚本总花费时间ms'
, (total_elapsed_time / execution_count)/1000 N'脚本平均执行耗时ms'
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) N'脚本语句内容'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
where SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) not like'%fetch%'
ORDER BY total_elapsed_time / execution_count DESC;


二、获取指定表的索引碎片情况

    DBCC SHOWCONTIG ('数据表名称')


三、重建数据表索引

   use   [databaseName]  
    
     ALTER INDEX ALL ON [数据表名称] REBUILD;
     ----将数据库表下所有索引进行重建


重建数据库索引的工作,一定要放在非高峰期时间,因为数据库索引重建会锁表

mssql sqlserver 数据库-索引重建的方法分享


摘要:
下文分享索引重建的方法,如下所示:
实验环境:sql server 2008 R2


方式1:重建单个索引

  alter index [索引名称]  on [表名称]  rebuild;

方式2:重建整个数据库下的所有索引(批量重建索引)

  use [数据库名称]
   go
    
  alter index all  on [表名称]  rebuild;
   go

mssql sqlserver dbcc dbreindex 关键字功能及使用说明


摘要:
下文将讲述dbcc dbreindex关键字的用法及功能说明,如下所示:
实验环境:sql server 2008 R2



dbcc dbreindex功能及语法说明:

DBCC DBREINDEX 功能:
重新生成指定数据表中一个或多个索引
DBCC DBREINDEX 语法:
DBCC DBREINDEX
([‘database.owner.table_name’
[,index_name
[,fillfactor]
]
]
)[ WITH NO_INFOMSGS ]

参数
‘database.owner.table_name’
指对象名称
database:数据库名称
owner:架构名称
table_name:表名或视图名称
index_name:
待重新的索引名称,如果输入空字符串,则对当前对象下的所有索引进行重建
fillfactor:
此处未索引页占存储空间的百分比,通常不输入此参数
WITH NO_INFOMSGS:
不显示消息

注意事项:
系统表上禁止使用DBCC DBREINDEX命令


DBCC DBREINDEX 举例应用:

 ---例1:使用填充因子 60 重建 test 数据库中 testTableName 表上的 PK_test 聚集索引。
    
	DBCC DBREINDEX ('test.dbo.testTableName', PK_test, 80)

----例2:使用填充因子值 30 重建 testTableName 表上的所有索引。

    DBCC DBREINDEX (testTableName, '', 70)