Статистика базы данных SQL Server - количество строк в индексе меньше, чем количество строк таблицы - PullRequest
0 голосов
/ 26 апреля 2019

Когда я запускаю следующий запрос:

SELECT 
    object_name(ss.object_id) object_name, 
    ss.name, last_updated, rows, rows_sampled,
    round (100 * (CAST(rows_sampled as float) / CAST(rows as float)), 2) sample_percent,
    steps, unfiltered_rows, ss.filter_definition, modification_counter, is_disabled
FROM 
    sys.stats AS ss
JOIN 
    sysobjects so on so.id = ss.object_id
JOIN 
    sys.indexes si on si.name = ss.name
CROSS APPLY 
    sys.dm_db_stats_properties(ss.object_id, ss.stats_id) AS sp
WHERE 
    so.xtype != 'S'
    AND sp.rows <> sp.rows_sampled
    AND ss.name not like '_WA%'
ORDER BY 
    object_name(ss.object_id), ss.name;

Я вижу индексы из той же таблицы, значения строк в которых отличаются.

Разве индекс не должен иметь одинаковое числострок в них как их основная таблица?

1 Ответ

3 голосов
/ 26 апреля 2019

Вы не сравниваете строки таблицы со строками индекса. Вы сравниваете общее количество строк со строками образца, использованными для создания статистики по индексу.

Из Документы Microsoft

  • строк Общее количество строк в таблице или индексированном представлении, когда статистика последний раз обновлялась. Если статистика фильтруется или соответствует отфильтрованному индексу, число строк может быть меньше количества строк в таблице.

  • row_sampled Общее количество строк, выбранных для статистических расчетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...