Criar índices com colunas incluídas
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
banco de dados SQL no Microsoft Fabric
Este artigo descreve como adicionar colunas incluídas (ou não chave) para estender a funcionalidade de índices não clusterizados no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. Ao incluir colunas não-chave, você pode criar índices não clusterizados que cobrem mais consultas. Isso ocorre porque as colunas não-chave têm os seguintes benefícios:
- Eles podem ser tipos de dados não permitidos como colunas de chave de índice.
- Eles não são considerados pelo Mecanismo de Banco de Dados ao calcular o número de colunas de chave de índice ou o tamanho da chave de índice.
Um índice com colunas não-chave pode melhorar significativamente o desempenho da consulta quando todas as colunas na consulta são incluídas no índice como colunas chave ou não-chave. Os ganhos de desempenho são alcançados porque o otimizador de consulta pode localizar todos os valores de coluna dentro do índice; os dados de tabela ou índice clusterizado não são acessados, resultando em menos operações de E/S de disco.
Observação
Quando um índice contém todas as colunas referenciadas por uma consulta, normalmente é referido como que abrange a consulta.
Recomendações de design
Reconfigure índices não clusterizados que tenham um tamanho grande de chave de índice para que apenas as colunas usadas para pesquisa e leitura sejam colunas de chave. Transforme todas as outras colunas que cobrem a consulta em colunas não-chave. Dessa forma, você terá todas as colunas necessárias para cobrir a consulta, mas a chave de índice em si é pequena e eficiente.
Inclua colunas não-chave em um índice não clusterizado para evitar exceder as limitações atuais de tamanho de índice de um máximo de 32 colunas de chave e um tamanho máximo de chave de índice de 1.700 bytes (16 colunas de chave e 900 bytes antes do SQL Server 2016 (13.x)). O Mecanismo de Banco de Dados não considera colunas não-chave ao calcular o número de colunas de chave de índice ou o tamanho da chave de índice.
A ordem das colunas não-chave na definição de índice não afeta o desempenho das consultas que usam o índice.
Evite índices não agrupados muito amplos em que as colunas incluídas não representem um subconjunto suficientemente estreito das colunas da tabela subjacente. Se adicionar índices amplos, verifique sempre se o custo de atualização de um índice extra amplo compensa o custo de leitura diretamente da tabela.
Limitações e restrições
As colunas não-chave só podem ser definidas em índices não clusterizados.
Todos os tipos de dados, exceto de texto, ntext e de imagem, podem ser usados como colunas não-chave.
Colunas computadas que são determinísticas e precisas ou imprecisas podem ser colunas não-chave. Para obter mais informações, consulte Índices em colunas computadas.
As colunas calculadas derivadas da imagem , do ntext e dos tipos de dados de texto podem ser colunas não-chave, desde que o tipo de dados da coluna calculada seja permitido como uma coluna de índice não-chave.
As colunas não-chave não podem ser descartadas de uma tabela, a menos que o índice dessa tabela seja descartado primeiro.
As colunas não-chave não podem ser alteradas, exceto para fazer o seguinte:
Altere a anulabilidade da coluna de NOT NULL para NULL.
Aumente o comprimento das colunas varchar, nvarcharou varbinary.
Segurança
Permissões
Requer permissão ALTER na tabela ou exibição. O usuário deve ser membro da função de servidor fixa sysadmin ou das funções de banco de dados db_ddladmin e db_owner fixas.
Usando o SQL Server Management Studio para criar um índice com colunas não-chave
No Pesquisador de Objetos, selecione o sinal de adição para expandir o banco de dados que contém a tabela na qual você deseja criar um índice com colunas não-chave.
Selecione o sinal de adição para expandir a pasta Tabelas.
Selecione o sinal de adição para expandir a tabela na qual você deseja criar um índice com colunas não-chave.
Clique com o botão direito do rato na pasta Índices, aponte para Novo Índicee selecione Índice Não Clusterizado....
Na caixa de diálogo Novo Índice, na página Geral, digite o nome do novo índice na caixa Nome do Índice.
Na aba das colunas de chave do índice, selecione Adicionar....
Na caixa de diálogo Selecionar Colunastable_name, marque a caixa de seleção ou caixas de seleção da coluna ou colunas da tabela que pretende adicionar ao índice.
Selecione OK.
Na guia Colunas incluídas, selecione Adicionar....
Na caixa de diálogo Selecionar Colunastable_name, selecione a caixa ou caixas de seleção das colunas da tabela a serem adicionadas ao índice como colunas não-chave.
Selecione OK.
Na caixa de diálogo Novo Índice, selecione OK.
Usando Transact-SQL para criar um índice com colunas não-chave
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.
USE AdventureWorks2022; GO -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns. -- index key column is PostalCode and the nonkey columns are -- AddressLine1, AddressLine2, City, and StateProvinceID. CREATE NONCLUSTERED INDEX IX_Address_PostalCode ON Person.Address (PostalCode) INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID); GO