Вы вызываете sys.dm_db_index_physical_stats
с набором параметров, отличным от того, который использует SSMS.
Когда вы вызываете эту функцию, вы указываете параметр mode=NULL
, который совпадает с mode='LIMITED'
. Если вы посмотрите SSMS с помощью SQL Profiler, вы увидите, что он предоставляет параметр mode='SAMPLED'
, например:
select partition_number as PartitionNumber,
index_type_desc as IndexType,
index_depth as Depth,
avg_fragmentation_in_percent as AverageFragmentation,
page_count as Pages,
avg_page_space_used_in_percent as AveragePageDensity,
record_count as Rows,
ghost_record_count as GhostRows,
version_ghost_record_count as VersionGhostRows,
min_record_size_in_bytes as MinimumRecordSize,
max_record_size_in_bytes as MaximumRecordSize,
avg_record_size_in_bytes as AverageRecordSize,
forwarded_record_count as ForwardedRecords
from sys.dm_db_index_physical_stats(11, 730589791, 1, NULL, 'SAMPLED')
В соответствии с Режимами сканирования (выделено):
Режим LIMITED является самым быстрым и сканирует наименьшее количество страниц. Для индекса сканируются только страницы родительского уровня B-дерева (то есть страницы выше уровня листа). Для кучи проверяются связанные страницы PFS и IAM, а страницы данных кучи сканируются в режиме LIMITED.
В режиме LIMITED сжато_page_count равно NULL, поскольку компонент Database Engine сканирует только неконечные страницыB-дерево и страницы IAM и PFS в куче.
Используйте режим SAMPLED, чтобы получить приблизительное значение для сжатого_страницы, и используйте режим DETAILED, чтобы получить фактическое значение для сжатого_страницы. Режим SAMPLED возвращает статистику на основе выборки в 1 процент от всех страниц в индексе или куче. Результаты в режиме SAMPLED следует рассматривать как приблизительные.