sys.dm_db_missing_index_details (Transact-SQL)sys.dm_db_missing_index_details (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Возвращает подробные сведения об отсутствующих индексах, за исключением пространственных индексов.Returns detailed information about missing indexes, excluding spatial indexes.

Динамические административные представления в среде База данных SQL AzureAzure SQL Database не могут предоставлять информацию, которая может повлиять на автономность базы данных, или информацию о других базах данных, к которым имеет доступ пользователь.In База данных SQL AzureAzure SQL Database, dynamic management views cannot expose information that would impact database containment or expose information about other databases the user has access to. Во избежание раскрытия этой информации все строки, содержащие данные, не принадлежащие подключенному клиенту, отфильтровываются.To avoid exposing this information, every row that contains data that doesn't belong to the connected tenant is filtered out.

Имя столбцаColumn name Тип данныхData type DescriptionDescription
index_handleindex_handle intint Идентифицирует специфический отсутствующий индекс.Identifies a particular missing index. Этот идентификатор уникален для сервера.The identifier is unique across the server. index_handle является ключом этой таблицы.index_handle is the key of this table.
database_iddatabase_id smallintsmallint Идентифицирует базу данных, в которой находится таблица с отсутствующим индексом.Identifies the database where the table with the missing index resides.
object_idobject_id intint Идентифицирует таблицу, в которой отсутствует индекс.Identifies the table where the index is missing.
equality_columnsequality_columns nvarchar (4000)nvarchar(4000) Список столбцов с разделителями-запятыми, соответствующих предикатам равенства в форме:Comma-separated list of columns that contribute to equality predicates of the form:

Таблица. столбец =constant_valuetable.column =constant_value
inequality_columnsinequality_columns nvarchar (4000)nvarchar(4000) Список столбцов с разделителями-запятыми, который соответствует предикатам неравенства, например предикатам в форме:Comma-separated list of columns that contribute to inequality predicates, for example, predicates of the form:

Таблица. столбец > constant_valuetable.column > constant_value

Любой оператор сравнения, кроме «=», выражает неравенство.Any comparison operator other than "=" expresses inequality.
included_columnsincluded_columns nvarchar (4000)nvarchar(4000) Список столбцов с разделителями-запятыми, необходимых в качестве столбцов для запроса.Comma-separated list of columns needed as covering columns for the query. Дополнительные сведения о охватывающих или включаемых столбцах см. в разделе Создание индексов с включением столбцов.For more information about covering or included columns, see Create Indexes with Included Columns.

Для оптимизированных для памяти индексов (хэш-и оптимизированных для памяти некластеризованных) игнорируйте included_columns.For memory-optimized indexes (both hash and memory-optimized nonclustered), ignore included_columns. Все столбцы таблицы включаются в каждый индекс с оптимизацией для памяти.All columns of the table are included in every memory-optimized index.
балансstatement nvarchar (4000)nvarchar(4000) Имя таблицы, в которой отсутствует индекс.Name of the table where the index is missing.

RemarksRemarks

Сведения, возвращенные представлением sys.dm_db_missing_index_details, будут обновленными, если запрос оптимизирован оптимизатором запросов и не является сохраненным.Information returned by sys.dm_db_missing_index_details is updated when a query is optimized by the query optimizer, and is not persisted. Сведения об отсутствующих индексах хранятся только до перезапуска SQL ServerSQL Server.Missing index information is kept only until SQL ServerSQL Server is restarted. Администраторы базы данных должны периодически делать резервные копии сведений об отсутствующих индексах, чтобы сохранить их после перезагрузки сервера.Database administrators should periodically make backup copies of the missing index information if they want to keep it after server recycling.

Чтобы определить, в какие группы входит отсутствующий индекс, можно выполнить запрос к динамическому административному представлению sys.dm_db_missing_index_groups, объединив его по эквивалентности с представлением sys.dm_db_missing_index_details, основанным на столбце index_handle.To determine which missing index groups a particular missing index is part of, you can query the sys.dm_db_missing_index_groups dynamic management view by equijoining it with sys.dm_db_missing_index_details based on the index_handle column.

Примечание

Результирующий набор для этого динамического административного представления ограничен 600 строк.The result set for this DMV is limited to 600 rows. Каждая строка содержит один отсутствующий индекс.Each row contains one missing index. Если у вас больше 600 отсутствующих индексов, следует устранить существующие отсутствующие индексы, чтобы можно было просмотреть новые.If you have more than 600 missing indexes, you should address the existing missing indexes so you can then view the newer ones.

Использование сведений об отсутствующих индексах в инструкциях CREATE INDEXUsing Missing Index Information in CREATE INDEX Statements

Чтобы преобразовать сведения, возвращаемые sys. dm_db_missing_index_details , в инструкцию CREATE INDEX для оптимизированных для памяти и дисковых индексов, столбцы равенства должны быть размещены перед столбцами неравенства, и вместе они должны сделать ключ индекса.To convert the information returned by sys.dm_db_missing_index_details into a CREATE INDEX statement for both memory-optimized and disk-based indexes, equality columns should be put before the inequality columns, and together they should make the key of the index. Включенные столбцы должны быть добавлены в инструкцию CREATE INDEX с помощью предложения INCLUDE.Included columns should be added to the CREATE INDEX statement using the INCLUDE clause. Чтобы определить эффективный порядок столбцов равенства, расположите их на основе их выборности, перечисляя наиболее выбираемые столбцы первыми (крайние левые в списке столбцов).To determine an effective order for the equality columns, order them based on their selectivity: list the most selective columns first (leftmost in the column list).

Дополнительные сведения об индексах, оптимизированных для памяти, см. в разделе индексы для таблиц, оптимизированных для памяти.For more information about memory-optimized indexes, see Indexes for Memory-Optimized Tables.

Согласованность транзакцийTransaction Consistency

Если транзакция создает или удаляет таблицу, то строки, содержащие сведения отсутствующих индексов об удаленных объектах, удаляются из данного объекта DMO, сохраняя согласованность транзакций.If a transaction creates or drops a table, the rows containing missing index information about the dropped objects are removed from this dynamic management object, preserving transaction consistency.

РазрешенияPermissions

В SQL ServerSQL Serverнеобходимо VIEW SERVER STATE разрешение.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
На База данных SQLSQL Database уровнях Premium требуется VIEW DATABASE STATE разрешение в базе данных.On База данных SQLSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. На База данных SQLSQL Database уровнях Standard и Basic требуется Администратор сервера или учетная запись администратора Azure Active Directory .On База данных SQLSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

См. также:See Also

sys. dm_db_missing_index_columns (Transact-SQL) sys.dm_db_missing_index_columns (Transact-SQL)
sys. dm_db_missing_index_groups (Transact-SQL) sys.dm_db_missing_index_groups (Transact-SQL)
sys. dm_db_missing_index_group_stats (Transact-SQL)sys.dm_db_missing_index_group_stats (Transact-SQL)