Porque WITH SAMPLE 50 PERCENT
funciona como si para cada página de datos en la tabla, SQL Server lanza una moneda. Si cae cara, lee todas las filas de la página. Si aterriza cruz, entonces no lee ninguno.
El seguimiento de la UPDATE STATISTICS T WITH SAMPLE 50 PERCENT
llamada en Profiler muestra que se emite la siguiente consulta
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)
Con plan
TABLESAMPLE SYSTEM (5.000000e+001 PERCENT)
es responsable del muestreo y está documentado aquí
TABLESAMPLE SYSTEM
devuelve un porcentaje aproximado de filas y genera un valor aleatorio para cada página física de 8 KB en la tabla. Según el valor aleatorio de una página y el porcentaje especificado en la consulta, una página se incluye en la muestra o se excluye. Cada página que se incluye devuelve todas las filas en el conjunto de resultados de muestra.
La documentación también establece
Aunque el plan muestra que se realiza un escaneo de tabla, solo las páginas que se incluyen en el conjunto de resultados deben leerse del archivo de datos.
La STATMAN
llamada es a una función agregada interna que se describe brevemente aquí