6

SQL Server生成时取样统计学,抽样百分比是如何计算的?

例如,更新帖子Id的列数据库管理员。投票Stack Overflow 2013数据库中的表:

更新统计数据库。投票(_WA_Sys_ 0000000 2_0AD2A005号) MAXDOP=1;

SQL Server生成内部语句:

选择统计人员([SC0],[SB0000]) 发件人(选择前100%[SC0],步骤方向([SC0])超过(按NULL排序)AS[SB0000]发件人(选择[PostId]作为[SC0]来自[dbo]。[投票]表样系统(9.234204e-01%)带有(读取未提交))AS _MS_UPDSTATS_TBL_HELPER公司订购依据[SC0],[SB0000])AS _MS_UPDSTATS_TBL系统选项(MAXDOP 1)

在哪里9.234204e-01%来自哪里?

1答案1

重置为默认值
5

采样百分比由行数表中的数字叶级页面在为统计信息收集选择的索引中。这个“索引”通常是基表(聚集索引或堆)。

这两个输入参数可以从DMV获得:

宣言@NumRows浮动,@NumPages浮动;选择@NumRows=转换(浮点,和(IPS.record_count)),@NumPages=转换(浮点,和(IPS.page_count))来自sys.dm_db_index_physical_stats(ID()中,对象ID(N'dbo.Votes','U'),1, 无效的,N“详细”)AS IPS公司哪里IPS.index_level=0;

计算如下:

宣言@最小页数浮动=1.024e+003,@百分之一百浮动=1e+002,@Magic1浮子=1.5e+001,@Magic2浮点=5.5e-001;选择采样百分比=国际投资基金(@页数<@MinPages,@百分之一百,@百分之一百*最少(@MinPages(最小页数)+圆形(@页码*(@魔法1*圆形(电源(@行数,@魔法2), 0, 1)) / @行数,0, 1),@页数) / @页码);

这将返回:

采样百分比
0.923420362201546

这与9.234204e-01%在问题中给出。

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览已标记的其他问题问你自己的问题.