Criar índices com colunas incluídas
Aplica-se a: SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Este tópico descreve como adicionar colunas incluído (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 você índices não clusterizados que abrangem mais consultas. Isto porque as colunas não chave têm os seguintes benefícios:
- Elas podem ser tipos de dados não permitidos como colunas de chave de índice.
- Elas não são consideradas 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 o desempenho de consulta significativamente quando todas as colunas na consulta são incluídas no índice como colunas de chave ou não chave. Os ganhos de desempenho são alcançados pois o otimizador de consulta pode localizar todos os valores de coluna dentro do índice, a tabela, ou dados de índice clusterizado não são acessados, resultando em poucas operações de E/S de disco.
Observação
Quando um índice contém todas as colunas referenciadas por uma consulta, ele costuma ser referenciado como se abrangendo a consulta.
Antes de começar
Recomendações de design
Redesenhe índices não clusterizados que tenham um tamanho grande de chave de índice, de tal forma que apenas as colunas usadas para buscas e pesquisas sejam colunas de chave. Transforme todas as outras colunas que abrangem a consulta em colunas não chave. Deste modo, você terá todas as colunas necessárias para abranger 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 do tamanho atual do í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 as colunas não chave ao calcular o número de colunas de chave de índice, ou o tamanho da chave do índice.
A ordem das colunas não chave na definição do índice não afeta o desempenho das consultas que usam o índice.
Evite índices não clusterizados muito largos em que as colunas incluídas não representam um subconjunto suficientemente estreito das colunas da tabela subjacente. Para adicionar índices largos, verifique se o custo da atualização de um índice extra grande desloca 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 text, ntexte image , podem ser usados como colunas não chave.
As colunas computadas que são determinísticas e precisas ou imprecisas podem ser colunas não chave. Para obter mais informações, consulte Indexes on Computed Columns.
As colunas computadas derivadas dos tipos de dados image, ntexte text podem ser colunas não chave, desde que o tipo de dados da coluna computada seja permitido como uma coluna de índice não chave.
As colunas que não são de chave não podem ser removidas de uma tabela, a menos que o índice dessa tabela seja removido primeiro.
As colunas não chave não podem ser alteradas, exceto para fazerem o seguinte:
Alterar a nulidade da coluna da coluna NOT NULL até NULL.
Aumente o tamanho das colunas varchar, nvarcharou varbinary .
Segurança
Permissões
Requer a 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 fixas db_ddladmin e db_owner .
Como usar o SQL Server Management Studio
Para criar um índice com colunas não chave
No Pesquisador de Objetos, clique no 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.
Clique no sinal de adição para expandir a pasta Tabelas .
Clique no 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 mouse na pasta Índices, aponte para Novo Índice e selecione Índice Não Clusterizado....
Na caixa de diálogo Novo Índice , na página Geral , insira o nome do novo índice na caixa Nome do índice .
Na guia Colunas de chave de índice, clique em Adicionar....
Na caixa de diálogo Selecionar colunas de table_name, marque as caixas de seleção das colunas da tabela a serem adicionadas ao índice.
Clique em OK.
Na guia Colunas incluídas, clique em Adicionar....
Na caixa de diálogo Selecionar Colunas detable_name , marque as caixas de seleção das colunas da tabela ou a serem adicionadas ao índice como colunas não chave.
Clique em OK.
Na caixa de diálogo Novo Índice , clique em OK.
Usando o 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, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em 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
Conteúdo relacionado
CREATE INDEX (Transact-SQL)
Guia de criação de índice do SQL Server