电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

alter table tablename rebuild基于统计更新的注意事项

来源:金蝶云社区作者:金蝶2024-09-166

alter table tablename rebuild基于统计更新的注意事项

背景知识: sys.dm_db_stats_properties:返回当前 SQL Server 数据库中指定数据库对象(表或索引视图)的统计信息属性。 总结: 1:对一个表中的数据,执行truncate/insert后后,查看dm_db_stats_properties 是不会变化的,除非主动进行索引优化 2:alater table的方式对表进行重建,需要分别对表,索引进行重建,否则只影响到表本身,索引不会变化,索引需要非常注意(如果对数据启用压缩也是类似问题) 3:使用dbcc dbreindex(表名)会对表,索引等相关的信息,进行重建(注意,是不带索引名的重建,否则也只会重建指定索引) 测试过程如下: 环境: 表索引定义(测试用途,忽略索引字段的选择) index_name index_description index_keys ------------------------------ ------------------------------ ------------------------------ idx_001 clustered located on PRIMARY fid idx_0011 nonclustered located on PRIMAR fid 1:对表执行truncate table操作: 查看统计相关情况脚本 SELECT ss.name, ss.stats_id, shr.* FROM sys.stats ss INNER JOIN sys.stats_columns sc ON ss.stats_id = sc.stats_id AND ss.object_id = sc.object_id INNER JOIN sys.all_columns ac ON ac.column_id = sc.column_id AND ac.object_id = sc.object_id CROSS APPLY sys.dm_db_stats_properties(ss.object_id, ss.stats_id) shr where ss.object_id=object_id('teststat') 查询结果,可以看到采样行和行数,已经最后更新的日期没有变化,所以数据删除后,这个表的记录是不会更新的。 name stats_id object_id stats_id last_updated rows rows_sampled steps unfiltered_rows modification_counter ------------------------------ ----------- ----------- ----------- --------------------------- -------------------- -------------------- ----------- -------------------- -------------------- idx_001 1 1634104862 1 2022-01-17 16:34:15.3200000 7365120 7365120 2 7365120 7365320 idx_0011 2 1634104862 2 2022-01-17 16:40:40.6900000 7365120 7365120 2 7365120 7365320 执行dbcc showcontig,可以看到数据为空,说明truncate table操作会释放空间,并且统计信息会被调整,说明dbcc 的命令是符合预期的。 DBCC SHOWCONTIG 正在扫描 'teststat' 表... 表: 'teststat' (1634104862);索引 ID: 2,数据库 ID: 6 已执行 LEAF 级别的扫描。 - 扫描页数................................: 0 - 扫描区数..............................: 0 - 区切换次数..............................: 0 - 每个区的平均页数........................: 0.0 - 扫描密度 [最佳计数:实际计数].......: 100.00% [0:0] - 逻辑扫描碎片 ..................: 0.00% - 区扫描碎片 ..................: 0.00% - 每页的平均可用字节数.....................: 0.0 - 平均页密度(满).....................: 0.00% DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 DBCC SHOWCONTIG 正在扫描 'teststat' 表... 表: 'teststat' (1634104862);索引 ID: 1,数据库 ID: 6 已执行 TABLE 级别的扫描。 - 扫描页数................................: 0 - 扫描区数..............................: 0 - 区切换次数..............................: 0 - 每个区的平均页数........................: 0.0 - 扫描密度 [最佳计数:实际计数].......: 100.00% [0:0] - 逻辑扫描碎片 ..................: 0.00% - 区扫描碎片 ..................: 0.00% - 每页的平均可用字节数.....................: 0.0 - 平均页密度(满).....................: 0.00% DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 对表进行重建 :alter table teststat rebuild with(data_compression=row,maxdop=2,online=on) 查询结果,可以看到只影响了聚集索引,而非索引并没有发生变化 name stats_id object_id stats_id last_updated rows rows_sampled steps unfiltered_rows modification_counter ------------------------------ ----------- ----------- ----------- --------------------------- -------------------- -------------------- ----------- -------------------- -------------------- idx_001 1 1634104862 1 NULL NULL NULL NULL NULL NULL idx_0011 2 1634104862 2 2022-01-17 16:40:40.6900000 7365120 7365120 2 7365120

alter table tablename rebuild基于统计更新的注意事项

背景知识: sys.dm_db_stats_properties:返回当前 SQL Server 数据库中指定数据库对象(表或索引视图)的统计信息属性。总结: 1:对一...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信