首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >估计行和实际行及多列统计数据

问估计行和实际行及多列统计数据
EN

Database Administration用户
提问于 2011-11-17 19:54:05
回答 1查看 2.5K关注 0票数 1

我试图理解多列索引和统计数据,下面是我的实际示例:

代码语言:javascript
复制
Table: TaskExecutions, size=~1 million rows.
Query SARGS: TaskExecStatusID = 3 AND TaskExecUpdatedDate IS NULL

Distribution:: TaskExecStatusID: 1=160k rows, 2=370k rows, 3=560k rows.  
TaskExecUpdatedDate: Null=171k rows.

我有一个索引(TaskExecStatusID,TaskExecUpdatedDate),

我的问题/问题是,上述查询的估计行数为256行,实际行数为560 K。

我想知道这两个数字为何有这么大的分别?

统计数据是最新的,索引的统计数据是多列统计数据。我尝试在索引/统计上创建(TaskExecUpdatedDate,TaskExecStatusID),而估计/实际值没有变化。

如果我运行一个DBCC SHOW_Statistics,密度部分中有两个列,而直方图没有。SQL server是否为多列统计信息中的列组合生成直方图?

戴夫

EN

回答 1

Database Administration用户

发布于 2012-01-01 15:18:37

你其实有几个问题要问,所以我会逐个说出来。

我的问题/问题是,上述查询的估计行数为256行,实际行数为560 K。我想知道这两个数字为何有这么大的分别?

为了回答这个问题,我们首先需要的是查询的实际执行计划。在中,您可以通过单击“查询”,包括“实际执行计划”来获得此结果。运行查询,单击“执行计划”选项卡,右键单击空白中的任何位置,单击“另存计划为”。保存它,并将其发布到某个地方,供人们下载和检查。

接下来我们需要的是DBCC SHOW_STATISTICS对该表上的统计数据的输出。您已经暗示了输出,这是一个很好的开始,但是原始输出将帮助我们准确地理解正在发生的事情。

如果我运行一个DBCC SHOW_Statistics,密度部分中有两个列,而直方图没有。SQL server是否为多列统计信息中的列组合生成直方图?

不是的。

我有一个索引(TaskExecStatusID,TaskExecUpdatedDate),

如果经常在示例中使用查询(使用TaskExecUpdateDate为NULL),则可以签出筛选过的索引。它们是Server 2008中的一个新特性,基本上允许您在索引中添加where子句。

http://sqlfool.com/2009/04/filtered-indexes-what-you-need-to-know/

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/8067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档