续:有关SQL SERVER分布统计的问题(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:50 点击:次
对于表变量来说,并不会触发自动更新
全扫描
在有些表中,经常看到由于某些列发生变化,与这些列相关的统计也会自动更新,但是若发现创建的统计是基于采样的数据,那你可能需要手动运行
UPDATE STATISTICS WITH FULLSCAN来更新统计,如下命令:
1: UPDATE STATISTICS Tab1 Stats_MyStatOnCol1 WITH FULLSCAN
说到这里,你可能会问:有必要关注数据库中统计所占用的空间吗?
答案取决于多种因素,通常不用过多关注统计所占用的空间,但是也不总是这样;如果你遇到一个含有非常长的列的表,或许你应该调查一下服务器是否因花费过多的时间和资源来更新这些统计的必要性。
在维护期间重建索引和更新统计,对于一个系统中数据量比较大的表来说,可能删除那些未使用的统计,这样有助于提高重建和统计更新的速度,不过并没有一种方法来检查统计对象是否使用,很难找出哪些统计对象未被使用。
测试
下面来通过一个示例来介绍,脚本创建一个示例表Tab1(26列),然后插入1万行:
1: CREATE TABLE Tab1 (ID Int IDENTITY(1,1) PRIMARY KEY,
2: Col1 VarChar(200) DEFAULT NEWID(),
3: Col2 VarChar(200) DEFAULT NEWID(),
4: Col3 VarChar(200) DEFAULT NEWID(),
5: Col4 VarChar(200) DEFAULT NEWID(),
6: Col5 VarChar(200) DEFAULT NEWID(),
7: Col6 VarChar(200) DEFAULT NEWID(),
8: Col7 VarChar(200) DEFAULT NEWID(),
9: Col8 VarChar(200) DEFAULT NEWID(),
10: Col9 VarChar(200) DEFAULT NEWID(),
11: Col10 VarChar(200) DEFAULT NEWID(),
12: Col11 VarChar(200) DEFAULT NEWID(),
13: Col12 VarChar(200) DEFAULT NEWID(),
14: Col13 VarChar(200) DEFAULT NEWID(),
15: Col14 VarChar(200) DEFAULT NEWID(),
16: Col15 VarChar(200) DEFAULT NEWID(),
17: Col16 VarChar(200) DEFAULT NEWID(),
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>