Đối với WITH SAMPLE 50 PERCENT
nó hoạt động như thể cho mỗi trang dữ liệu trong bảng SQL Server lật một đồng xu. Nếu nó hạ cánh thì nó sẽ đọc tất cả các hàng trên trang. Nếu nó hạ cánh thì nó không đọc.
Theo dõi UPDATE STATISTICS T WITH SAMPLE 50 PERCENT
cuộc gọi trong Profiler cho thấy truy vấn sau được phát ra
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)
Với kế hoạch
TABLESAMPLE SYSTEM (5.000000e+001 PERCENT)
chịu trách nhiệm lấy mẫu và được ghi lại ở đây
TABLESAMPLE SYSTEM
trả về tỷ lệ phần trăm xấp xỉ của các hàng và tạo giá trị ngẫu nhiên cho mỗi trang 8 KB vật lý trong bảng. Dựa trên giá trị ngẫu nhiên cho một trang và tỷ lệ phần trăm được chỉ định trong truy vấn, một trang được bao gồm trong mẫu hoặc được loại trừ. Mỗi trang được bao gồm trả về tất cả các hàng trong tập kết quả mẫu.
Các tài liệu cũng nêu
Mặc dù kế hoạch cho thấy quét bảng được thực hiện, nhưng chỉ những trang được bao gồm trong tập kết quả thực sự được yêu cầu phải đọc từ tệp dữ liệu.
Cuộc STATMAN
gọi này là một chức năng tổng hợp nội bộ được mô tả ngắn gọn ở đây