Ponieważ WITH SAMPLE 50 PERCENT
działa to tak, jakby dla każdej strony danych w tabeli SQL Server odwrócił monetę. Jeśli wyląduje, odczytuje wszystkie wiersze na stronie. Jeśli wyląduje, to nie czyta żadnego.
Śledzenie UPDATE STATISTICS T WITH SAMPLE 50 PERCENT
połączenia w programie Profiler pokazuje, że wysyłane jest następujące zapytanie
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)
Z planem
TABLESAMPLE SYSTEM (5.000000e+001 PERCENT)
jest odpowiedzialny za pobieranie próbek i jest tutaj udokumentowany
TABLESAMPLE SYSTEM
zwraca przybliżony procent wierszy i generuje losową wartość dla każdej fizycznej strony o wielkości 8 KB w tabeli. Na podstawie losowej wartości strony i wartości procentowej określonej w zapytaniu strona jest uwzględniona w próbce lub wykluczona. Każda uwzględniona strona zwraca wszystkie wiersze w przykładowym zestawie wyników.
Dokumentacja również stwierdza
Chociaż plan pokazuje, że wykonywane jest skanowanie tabeli, tylko te strony, które są zawarte w zestawie wyników, są w rzeczywistości wymagane do odczytania z pliku danych.
STATMAN
Wezwanie jest agregat wewnętrzny Funkcja krótko opisane tutaj