sys.dm_db_missing_index_group_stats (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает сводку сведений о группах отсутствующих индексов, за исключением пространственных индексов.
В База данных SQL Azure динамические административные представления не могут предоставлять сведения, влияющие на доступность базы данных или предоставление сведений о других базах данных, к которым пользователь имеет доступ. Чтобы избежать предоставления этой информации, отфильтровывается каждая строка, содержащая данные, которые не принадлежат подключену клиенту.
Имя столбца | Тип данных | Description |
---|---|---|
group_handle | int | Идентифицирует группу отсутствующих индексов. Этот идентификатор уникален в пределах сервера. Другие столбцы содержат сведения обо всех запросах, для которых индекс в группе считается отсутствующим. Группа индексов содержит только один индекс. Можно присоединиться к index_group_handle sys.dm_db_missing_index_groups. |
unique_compiles | bigint | Число компиляций и повторных компиляций, которые получают преимущества от этой группы отсутствующих индексов. Компиляции и повторные компиляции многих различных запросов могут влиять на значение этого столбца. |
user_seeks | bigint | Количество операций поиска по запросам пользователя, для которых мог бы использоваться рекомендованный индекс в группе. |
user_scans | bigint | Количество операций просмотра по запросам пользователя, для которых мог бы использоваться рекомендованный индекс в группе. |
last_user_seek | datetime | Дата и время последней операции поиска по запросам пользователя, для которых мог бы использоваться рекомендованный индекс в группе. |
last_user_scan | datetime | Дата и время последней операции просмотра по запросам пользователя, для которых мог бы использоваться рекомендованный индекс в группе. |
avg_total_user_cost | float | Средняя стоимость запросов пользователя, которая могла быть уменьшена с помощью индекса в группе. |
avg_user_impact | float | Средний процент выигрыша, который могли получить запросы пользователя, если создать эту группу отсутствующих индексов. Значение показывает, что стоимость запроса в среднем уменьшится на этот процент, если создать эту группу отсутствующих индексов. |
system_seeks | bigint | Количество операций поиска по запросам системы, таким как запросы auto stats, для которых мог бы использоваться рекомендованный индекс в группе. Дополнительные сведения см. в разделе "Класс событий Автостата". |
system_scans | bigint | Количество операций просмотра по запросам системы, для которых мог бы использоваться рекомендованный индекс в группе. |
last_system_seek | datetime | Дата и время последней операции системного поиска по запросам системы, для которых мог бы использоваться рекомендованный индекс в группе. |
last_system_scan | datetime | Дата и время последней операции системного просмотра по запросам системы, для которых мог бы использоваться рекомендованный индекс в группе. |
avg_total_system_cost | float | Средняя стоимость системных запросов, которая могла быть уменьшена с помощью индекса в группе. |
avg_system_impact | float | Средний процент выигрыша, который могли получить запросы системы, если создать эту группу отсутствующих индексов. Значение показывает, что стоимость запроса в среднем уменьшится на этот процент, если создать эту группу отсутствующих индексов. |
Замечания
Информация, возвращаемая sys.dm_db_missing_index_group_stats
каждой операцией запроса, не каждой компиляцией запросов или перекомпиляцией. Статистика использования не сохраняется и сохраняется только до перезапуска ядра СУБД. Администраторы базы данных должны периодически делать резервные копии сведений об отсутствующих индексах, если необходимо сохранить статистику использования после перезагрузки сервера. Узнать время последнего запуска ядра СУБД можно в столбце sqlserver_start_time
из sys.dm_os_sys_info.
Примечание.
Результирующий набор для этого динамического административного представления ограничен 600 строками. Каждая строка содержит один отсутствующий индекс. Если у вас более 600 отсутствующих индексов, следует устранить существующие отсутствующие индексы, чтобы просмотреть новые.
Одна из отсутствующих групп индексов может иметь несколько запросов, необходимых для одного и того же индекса. Дополнительные сведения об отдельных запросах, необходимых для определенного индекса в этом динамическом административном представлении, см. в sys.dm_db_missing_index_group_stats_query.
Разрешения
Для выполнения запроса к этому динамическому административному представлению пользователям должно быть предоставлено разрешение VIEW SERVER STATE или любое другое, подразумевающее разрешение VIEW SERVER STATE.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.
Примеры
В следующих примерах показано, как использовать динамическое sys.dm_db_missing_index_group_stats
представление управления. Узнайте больше об использовании отсутствующих индексов в настройке некластеризованных индексов с отсутствующими предложениями индекса.
А. Поиск 10 отсутствующих индексов с самым высоким ожидаемым улучшением производительности пользовательских запросов
Следующий запрос определяет, какие 10 отсутствующих индексов окажут самое высокое ожидаемое совокупное улучшение производительности запросов пользователя в порядке убывания.
SELECT TOP 10 *
FROM sys.dm_db_missing_index_group_stats
ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;
B. Поиск отдельных отсутствующих индексов и подробных сведений об их столбцах для определенной группы отсутствующих индексов
Следующий запрос определяет, какие отсутствующие индексы составляют отдельную группу отсутствующих индексов, и отображает подробные сведения об их столбцах. Для этого примера отсутствующий индекс group_handle
равен 24.
SELECT migs.group_handle, mid.*
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig
ON (migs.group_handle = mig.index_group_handle)
INNER JOIN sys.dm_db_missing_index_details AS mid
ON (mig.index_handle = mid.index_handle)
WHERE migs.group_handle = 24;
Этот запрос предоставляет имя базы данных, схемы и таблицы, в которой отсутствует индекс. Он также предоставляет имена столбцов, которые должны использоваться для ключа индекса. При написании инструкции CREATE INDEX DDL для реализации отсутствующих индексов сначала перечислите столбцы равенства, а затем столбцы неравенства в предложении ON <table_name> инструкции CREATE INDEX. Включенные столбцы должны быть перечислены в предложении INCLUDE инструкции CREATE INDEX. Чтобы определить эффективный порядок столбцов равенства, расположите их на основе их выборности, перечисляя наиболее выбираемые столбцы первыми (крайние левые в списке столбцов). Узнайте, как применять отсутствующие предложения индекса.
Следующие шаги
Дополнительные сведения о функции отсутствующих индексов см. в следующих статьях:
- Настройка некластеризованных индексов с предложениями отсутствующих индексов
- sys.dm_db_missing_index_columns (Transact-SQL)
- sys.dm_db_missing_index_details (Transact-SQL)
- sys.dm_db_missing_index_groups (Transact-SQL)
- sys.dm_db_missing_index_group_stats_query (Transact-SQL)
- Инструкция CREATE INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)