续:有关SQL SERVER分布统计的问题(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:50 点击:
  18:                    Col17 VarChar(200) DEFAULT NEWID(),
  19:                    Col18 VarChar(200) DEFAULT NEWID(),
  20:                    Col19 VarChar(200) DEFAULT NEWID(),
  21:                    Col20 VarChar(200) DEFAULT NEWID(),
  22:                    Col21 VarChar(200) DEFAULT NEWID(),
  23:                    Col22 VarChar(200) DEFAULT NEWID(),
  24:                    Col23 VarChar(200) DEFAULT NEWID(),
  25:                    Col24 VarChar(200) DEFAULT NEWID(),
  26:                    Col25 VarChar(200) DEFAULT NEWID())
  27: GO
  28: INSERT INTO Tab1 DEFAULT VALUES
  29: GO 10000
接着,我们来运行DBCC来执行索引重建,注意该表没有任何统计,你可以通过PROFILER来检查。
   1: DBCC DBREINDEX (Tab1)
   2: GO
现在我们假设你在表上为每一列创建一个统计,这意味着重建会触发统计的更新,通常你不必太在意,但是要清楚如何管理就行。
 
要为每一列创建统计对象,可以使用sp_createstats存储过程。
EXEC sp_createstats; 
GO
执行上面的存储过程后,将为表Tab1的26个字段分别创建一个统计,然后再执行重建操作。
DBCC DBREINDEX (Tab1) 
GO
从上面的输出可以看出,有大量的更新统计(SELECT StatsMan…)执行。
 
 
接下来我们来看一下统计对象占用多少的容量。
统计对象所占用的空间容量实际上很小,不会对系统性能造成影响,如果你持怀疑态度,想调查统计对象实际占用了多少容量,运行以下查询:
   1: IF OBJECT_ID('tempdb.dbo.#TMP') IS NOT NULL
   2:   DROP TABLE #TMP
   3: GO
   4: CREATE TABLE #TMP (ID Int Identity(1,1) PRIMARY KEY, 
   5:                    Table_Name      VarChar(200),
   6:                    Column_Name     VarChar(200),
   7:                    Stats_Name      VarChar(200),
   8:                    ColStats_Stream VarBinary(MAX),
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • SQL小技巧系列 --- 行转列合并
  • sql server 列转行
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1