Compartilhar via


Criar índices com colunas incluídas

Este tópico descreve como adicionar colunas incluídas (ou não chaves) para estender a funcionalidade de índices não clusterizados no SQL Server 2014 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 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 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 normalmente é chamado de cobertura da consulta.

Nesse Tópico

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. Crie 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 atuais de tamanho de í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

  • 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.

  • Colunas computadas determinísticas e precisas ou imprecisas podem ser colunas não chave. Para obter mais informações, consulte Indexes on Computed Columns.

  • Colunas computadas derivadas de image, ntexte text os tipos de dados podem ser colunas não chave, desde que o tipo de dados de coluna computada seja permitido como uma coluna de índice não chave.

  • As colunas não chave não podem ser removidas 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 fazerem o seguinte:

    • Alterar a nulidade da coluna da coluna NOT NULL até NULL.

    • Aumentar o comprimento das colunas varchar, nvarchar, ou 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

  1. 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.

  2. Clique no sinal de mais para expandir a pasta Tabelas.

  3. Clique no sinal de adição para expandir a tabela na qual você deseja criar um índice com colunas não chave.

  4. Clique com o botão direito do mouse na pasta Índices , aponte para Novo Índice e selecione Índice Não Clusterizado....

  5. Na caixa de diálogo Novo Índice , na página Geral , insira o nome do novo índice na caixa de nome índice .

  6. Na guia Colunas de chave de índice, clique em Adicionar....

  7. Na caixa de diálogo Selecionar Colunas table_name, marque a caixa de seleção ou as caixas de seleção da coluna ou colunas da tabela a serem adicionadas ao índice.

  8. Clique em OK.

  9. Na guia Colunas Incluídas , clique em Adicionar....

  10. Na caixa de diálogo Selecionar Colunasde table_name , marque a caixa de seleção ou as caixas de seleção da coluna ou colunas da tabela a serem adicionadas ao índice como colunas não chave.

  11. Clique em OK.

  12. Na caixa de diálogo Novo Índice , clique em OK.

Usando Transact-SQL

Para criar um índice com colunas não chave

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. 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, consulte CREATE INDEX (Transact-SQL).