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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Retorna informações detalhadas sobre índices ausentes e exclusão de índices espaciais.Returns detailed information about missing indexes, excluding spatial indexes.

No Banco de dados SQL do AzureAzure SQL Database, as exibições de gerenciamento dinâmico não podem expor informações que afetarão a contenção do banco de dados ou informações sobre outros bancos de dados aos quais o usuário tem acesso.In Banco de dados SQL do 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. Para evitar a exposição dessas informações, cada linha que contém dados que não pertencem ao locatário conectado será filtrada.To avoid exposing this information, every row that contains data that doesn't belong to the connected tenant is filtered out.

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
index_handleindex_handle intint Identifica um determinado índice ausente.Identifies a particular missing index. O identificador é exclusivo no servidor.The identifier is unique across the server. index_handle é a chave dessa tabela.index_handle is the key of this table.
database_iddatabase_id smallintsmallint Identifica o banco de dados onde reside a tabela com o índice ausente.Identifies the database where the table with the missing index resides.
object_idobject_id intint Identifica a tabela onde o índice está ausente.Identifies the table where the index is missing.
equality_columnsequality_columns nvarchar(4000)nvarchar(4000) Lista separada por vírgulas de colunas que contribuem para os predicados de igualdade do formulário:Comma-separated list of columns that contribute to equality predicates of the form:

table.column =constant_valuetable.column =constant_value
inequality_columnsinequality_columns nvarchar(4000)nvarchar(4000) Lista separada por vírgulas de colunas que contribuem para predicados de desigualdade, por exemplo, predicados do formulário:Comma-separated list of columns that contribute to inequality predicates, for example, predicates of the form:

table.column > constant_valuetable.column > constant_value

Qualquer operador de comparação diferente de "=" expressa desigualdade.Any comparison operator other than "=" expresses inequality.
included_columnsincluded_columns nvarchar(4000)nvarchar(4000) Lista separada por vírgulas de colunas necessárias como colunas de cobertura para a consulta.Comma-separated list of columns needed as covering columns for the query. Para obter mais informações sobre como cobrir ou colunas incluídas, consulte criar índices com colunas incluídas.For more information about covering or included columns, see Create Indexes with Included Columns.

Para índices com otimização de memória (hash e otimização de memória não clusterizado), ignore included_columns.For memory-optimized indexes (both hash and memory-optimized nonclustered), ignore included_columns. Todas as colunas da tabela são incluídas em cada índice com otimização de memória.All columns of the table are included in every memory-optimized index.
instruçãostatement nvarchar(4000)nvarchar(4000) Nome da tabela onde o índice está ausente.Name of the table where the index is missing.

ComentáriosRemarks

Informações retornadas por DM db_missing_index_details é atualizada quando uma consulta for otimizada pelo otimizador de consulta e não é persistente.Information returned by sys.dm_db_missing_index_details is updated when a query is optimized by the query optimizer, and is not persisted. As informações do índice ausente são mantidas apenas até o SQL ServerSQL Server ser reiniciado.Missing index information is kept only until SQL ServerSQL Server is restarted. Os administradores de banco de dados devem periodicamente gerar cópias de backup de informações de índice ausente se quiserem mantê-las após o desligamento e a reinicialização do servidor.Database administrators should periodically make backup copies of the missing index information if they want to keep it after server recycling.

Para determinar qual índice ausente grupos a um determinado índice ausente é parte do, você pode consultar a db_missing_index_groups exibição de gerenciamento dinâmico por pertence com DM db_missing_index_details com base em de index_handle coluna.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.

Observação

Conjunto de resultados para essa DMV são limitado a 600 linhas.The result set for this DMV is limited to 600 rows. Cada linha contém um índice ausente.Each row contains one missing index. Se você tiver mais de 600 índices ausentes, você deve tratar os índices ausentes existentes para que você possa exibir, em seguida, as mais recentes.If you have more than 600 missing indexes, you should address the existing missing indexes so you can then view the newer ones.

Usando informações de índice ausente em instruções CREATE INDEXUsing Missing Index Information in CREATE INDEX Statements

Para converter as informações retornadas por DM db_missing_index_details em uma instrução CREATE INDEX para índices com otimização de memória tanto baseadas em disco, as colunas iguais devem ser colocadas antes das colunas desiguais e juntos elas devem gerar a chave do índice.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. As colunas incluídas devem ser adicionadas à instrução CREATE INDEX com a cláusula INCLUDE.Included columns should be added to the CREATE INDEX statement using the INCLUDE clause. Para determinar uma ordem efetiva para as colunas desiguais, ordene-as com base em sua seletividade: liste as colunas mais seletivas primeiro (a mais à esquerda na lista de colunas).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).

Para obter mais informações sobre índices com otimização de memória, consulte índices para tabelas com otimização de memória.For more information about memory-optimized indexes, see Indexes for Memory-Optimized Tables.

Consistência de transaçãoTransaction Consistency

Se uma transação criar ou descartar uma tabela, as linhas contendo as informações de índice ausente sobre os objetos descartados serão removidas do objeto de gerenciamento dinâmico, preservando a consistência da transação.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.

PermissõesPermissions

Na SQL ServerSQL Server, requer VIEW SERVER STATE permissão.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
Na Banco de Dados SQLSQL Database camadas Premium, requer o VIEW DATABASE STATE permissão no banco de dados.On Banco de Dados SQLSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. Na Banco de Dados SQLSQL Database camadas Standard e básica, requer a administrador de servidor ou uma administrador do Active Directory do Azure conta.On Banco de Dados SQLSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

Consulte tambémSee 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)