SQLServer 重建索引前后对比

在做维护项目的时,我们经常会遇到索引维护的问题,通过语句,我们就可以判断某个表的索引是否需要重建。

执行一下语句:先分析表的索引

分析表的索引建立情况:DBCC showcontig(‘Table‘)

DBCC SHOWCONTIG 正在扫描 ‘Table‘‘ 表...
表: ‘Table‘‘ (53575229);索引 ID: 1,数据库 ID: 14
已执行 TABLE 级别的扫描。
- 扫描页数................................: 228
- 扫描区数..............................: 52
- 区切换次数..............................: 225
- 每个区的平均页数........................: 4.4
- 扫描密度 [最佳计数:实际计数].......: 12.83% [29:226]
- 逻辑扫描碎片 ..................: 97.37%
- 区扫描碎片 ..................: 98.08%
- 每页的平均可用字节数........................: 2686.3
- 平均页密度(满).....................: 66.81%

当你发现,扫描密度行,最佳计数和实际计数的比例已经严重失调,逻辑扫描碎片占了非常大的百分比,每页平均可用字节数非常大时,就说明

你的索引需要重新整理一下了。

执行重建索引命令:
DBCC DBREINDEX(‘Table‘‘)
后分析的情况

DBCC SHOWCONTIG 正在扫描 ‘Table‘‘ 表...
表: ‘Table‘‘ (53575229);索引 ID: 1,数据库 ID: 14
已执行 TABLE 级别的扫描。
- 扫描页数................................: 154
- 扫描区数..............................: 20
- 区切换次数..............................: 19
- 每个区的平均页数........................: 7.7
- 扫描密度 [最佳计数:实际计数].......: 100.00% [20:20]
- 逻辑扫描碎片 ..................: 0.00%
- 区扫描碎片 ..................: 55.00%
- 每页的平均可用字节数........................: 86.8
- 平均页密度(满).....................: 98.93%

时间: 2025-01-22 19:44:38

SQLServer 重建索引前后对比的相关文章

SQLServer重建索引

Use [数据库名称] Go DECLARE @DBCCString NVARCHAR(1000) DECLARE @TableName VARCHAR(100) DECLARE Cur_Index CURSOR FOR SELECT Name AS TblName FROM sysobjects WHERE xType='U' ORDER BY TblName FOR READ ONLY OPEN Cur_Index FETCH NEXT FROM Cur_Index INTO @TableN

SqlServer 重建索引

大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server 要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数据来提高数据的访问速度,而非簇索引则通过维护表中的数据指针来提高数据的索引. 为什么要不断的维护表的索引?首先,简单介绍一下索引的体系结构.SQL Server在硬盘中用8KB页面在数据库文件内存放数据.缺省情况下这些页面及其包含的数据是无组织的.为了使混乱变为有序,就要生成索引.生成索引后,就有了

对比:重建索引与更新统计

最近经常被问到的一个问题是关于在数据库维护过程,重建索引与更新统计的执行先后次序.通常,需要考虑以下几点,这里注意的是有两种统计:索引统计.列统计. 1)默认情况下,UPDATE STATISTICS 将会更新索引统计和列统计,如果语句中仅使用了COLUMNS选项,则只更新列统计,若仅使用了INDEX选项,则只更新索引统计 2)默认情况下,UPDATE STATISTICS语句仅采样表的一部分数据,使用UPDATE STATISTICS WITH FULLSCAN则会扫描全表 3)重建索引(如使

重建索引提高查询效率

sqlserver重建(rebuild)索引可以提高查询速度 当随着表的数据量不断增长,很多存储的数据进行了不适当的跨页(sqlserver中存储的最小单位是页,页是不不可再分的),会产生很多索引的碎片.这时候需要重建索引来提高查询性能   SQL Server 2005在硬盘中用8KB页面在数据库文件内存放数据.缺省情况下这些页面及其包含的数据是无组织的.为了使混乱变为有序,就要生成索引.生成索引后,就有了索引页和数据页之分:数据页用来保存用户写入的数据信息:索引页存放用于检索列的数据值清单(

SQLSERVER聚集索引与非聚集索引的再次研究(上)

原文:SQLSERVER聚集索引与非聚集索引的再次研究(上) SQLSERVER聚集索引与非聚集索引的再次研究(上) 上篇主要说聚集索引 下篇的地址:SQLSERVER聚集索引与非聚集索引的再次研究(下) 由于本人还是SQLSERVER菜鸟一枚,加上一些实验的逻辑严谨性, 单写<SQLSERVER聚集索引与非聚集索引的再次研究(上)>就用了12个小时,两篇文章加起来最起码写了20个小时, 本人非常非常用心的努力完成这两篇文章,希望各位看官给点意见o(∩_∩)o 为了搞清楚索引内部工作原理和结构

SQL SEVER数据库重建索引的方法

一.查询思路 1.想要判断数据库查询缓慢的问题,可以使用如下语句,可以列出查询语句的平均时间,总时间,所用的CPU时间等信息 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 SELECT creation_time N'语句编译时间' ,last_execution_time N'上次执行时间' ,total_physical_reads N'物理读取总次数' ,total_logical_reads/execution

重建索引时,一些数值

重建索引,表记录1.4亿条,晚上九点半左右执行,几个数值,记录下来供参考 ALTER INDEX IX_IndustryIdLv2_UpdateTime ON dbo.Product_Info REBUILD WITH (ONLINE = ON)--晚上21:30执行用时11:17 ALTER INDEX IX_UserId_UpdateTime ON dbo.Product_Info REBUILD WITH (ONLINE = ON)--晚上21:30执行用时06:05 执行时,user c

移动表到新表空间后重建索引

将某个表空间内的多个数据库表移动到另一个表空间后,由于没有处理索引,导致到新库中查询.插入等操作时,oracle报错: ORA-01502: 索引 'WWYSBI41.SYS_C0027004' 或这类索引的分区处于不可用状态 原因是仍用了之前表空间的索引,解决办法是重建这些索引. 对单个表索引, alter index <index_name> rebuild (online) 注:上面的index_name外面的<和>只是表示这是一个变量,并不是真的要加<与>. 对

达梦7的试用 与SQLSERVER的简单技术对比

达梦7的试用 与SQLSERVER的简单技术对比 达梦数据库公司推出了他们的数据库服务管理平台,可以在该平台使用达梦数据库而无须安装达梦7数据库 地址:http://online.dameng.com/ 说实话,第一眼看到还是感到很高大上的,毕竟ORACLE.MYSQL.SQLSERVER都没有推出数据库试用的云平台 其实其他数据库也应该学习一下达梦,做一个平台让大家有机会学习自家的数据库知识,虽然现在这个时代下载安装包比较容易,不过提供一个平台也是有好处的 达梦数据库文档下载:http://f