Answers:
因为WITH SAMPLE 50 PERCENT
它的作用就像SQL Server表中的每个数据页都掷硬币。如果它落在了头上,那么它将读取页面上的所有行。如果它落在尾巴上,那么它什么都不读。
UPDATE STATISTICS T WITH SAMPLE 50 PERCENT
在事件探查器中跟踪呼叫显示发出以下查询
SELECT StatMan([SC0], [SB0000])
FROM (SELECT TOP 100 PERCENT [SC0],
step_direction([SC0]) OVER (ORDER BY NULL) AS [SB0000]
FROM (SELECT [C] AS [SC0]
FROM [dbo].[T] TABLESAMPLE SYSTEM (5.000000e+001 PERCENT)
WITH (READUNCOMMITTED)) AS _MS_UPDSTATS_TBL_HELPER
ORDER BY [SC0],
[SB0000]) AS _MS_UPDSTATS_TBL
OPTION (MAXDOP 1)
有计划
TABLESAMPLE SYSTEM (5.000000e+001 PERCENT)
负责采样并在此处记录
TABLESAMPLE SYSTEM
返回大约的行百分比,并为表中的每个8 KB物理页生成一个随机值。根据页面的随机值和查询中指定的百分比,页面将包含在样本中或排除在样本中。包含的每个页面都返回样本结果集中的所有行。
该文档还指出
尽管该计划显示执行了表扫描,但是实际上仅需要从数据文件中读取结果集中包含的那些页面。
该STATMAN
调用是对内部聚合函数的简要说明