Criar índices com colunas incluídas
Este tópico descreve como adicionar colunas incluídas (ou não chave) para estender a funcionalidade de índices não clusterizados no SQL Server 2014 usando SQL Server Management Studio ou 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.
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 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.
Neste tópico
Antes de começar:
Para criar um índice com colunas não chave, usando:
Antes de começar
Recomendações de design
Redesenhe índices não clusterizados com um comprimento 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 16 colunas de chave, e um tamanho máximo de chave de índice de 900 bytes. 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.
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
,ntext
eimage
, 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
,ntext
etext
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.
Aumentar o comprimento das colunas
varchar
,nvarchar
, ouvarbinary
.
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 detable_name, selecione a caixa marcar ou marcar caixas da coluna ou 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 dotable_name, selecione a caixa marcar ou marcar caixas da coluna ou colunas da tabela 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 AdventureWorks2012; 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
Para obter mais informações, veja CREATE INDEX (Transact-SQL).