Compartilhar via


Criar índices não clusterizados

Você pode criar índices não clusterizados no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL. Um índice não clusterizado é uma estrutura de índice separada dos dados armazenados em uma tabela que reordena uma ou mais colunas selecionadas. Índices não clusterizados geralmente podem ajudá-lo a encontrar dados mais rapidamente do que pesquisar na tabela subjacente; às vezes, as consultas podem ser respondidas inteiramente pelos dados no índice não clusterizado ou o índice não clusterizado pode apontar o Mecanismo de Banco de Dados para as linhas na tabela subjacente. Geralmente, índices não clusterizados são criados para melhorar o desempenho de consultas usadas com frequência não cobertas pelo índice clusterizado ou para localizar linhas em uma tabela sem um índice clusterizado (chamado de heap). Você pode criar vários índices não clusterizados em uma tabela ou exibição indexada.

Nesse Tópico

Antes de começar

Implementações típicas

Índices não clusterizados são implementados das seguintes maneiras:

  • Restrições UNIQUE

    Quando você cria uma restrição UNIQUE, um índice não clusterizado exclusivo é criado para impor uma restrição UNIQUE por padrão. Você pode especificar um índice clusterizado exclusivo se um índice clusterizado na tabela ainda não existir. Para obter mais informações, consulte Restrições Exclusivas e Restrições de Verificação.

  • Índice independente de uma restrição

    Por padrão, um índice não clusterizado será criado se clusterizado não for especificado. O número máximo de índices não clusterizados que podem ser criados por tabela é 999. Isso inclui todos os índices criados por restrições PRIMARY KEY ou UNIQUE, mas não inclui índices XML.

  • Índice não clusterizado em uma exibição indexada

    Depois que um índice clusterizado exclusivo for criado em uma visão, índices não clusterizados poderão ser criados. Para obter mais informações, veja Criar exibições indexadas.

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 não clusterizado usando o Designer de Tabela

  1. No Pesquisador de Objetos, expanda o banco de dados que contém a tabela na qual você deseja criar um índice não clusterizado.

  2. Expanda a pasta Tabelas .

  3. Clique com o botão direito do mouse na tabela na qual você deseja criar um índice não clusterizado e selecione Design.

  4. No menu Designer de Tabela , clique em Índices/Chaves.

  5. Na caixa de diálogo Índices/Chaves , clique em Adicionar.

  6. Selecione o novo índice na caixa de texto Chave Primária/Exclusiva Selecionada ou Índice .

  7. Na tabela, selecione Criar como Agrupado e escolha Não na lista suspensa à direita da propriedade.

  8. Clique em Fechar.

  9. No menu Arquivo , clique em Salvartable_name.

Para criar um índice não clusterizado usando o Pesquisador de Objetos

  1. No Pesquisador de Objetos, expanda o banco de dados que contém a tabela na qual você deseja criar um índice não clusterizado.

  2. Expanda a pasta Tabelas .

  3. Expanda a tabela na qual você deseja criar um índice não clusterizado.

  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. Em Colunas de chave do índice, clique em Adicionar....

  7. Na caixa de diálogo Selecionar Colunas detable_name, marque a caixa de seleção ou as caixas de seleção das colunas da tabela que devem ser adicionadas ao índice não clusterizado.

  8. Clique em OK.

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

Usando Transact-SQL

Para criar um índice não clusterizado em uma tabela

  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  
    -- Find an existing index named IX_ProductVendor_VendorID and delete it if found.   
    IF EXISTS (SELECT name FROM sys.indexes  
                WHERE name = N'IX_ProductVendor_VendorID')   
        DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;   
    GO  
    -- Create a nonclustered index called IX_ProductVendor_VendorID   
    -- on the Purchasing.ProductVendor table using the BusinessEntityID column.   
    CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID   
        ON Purchasing.ProductVendor (BusinessEntityID);   
    GO  
    

Para obter mais informações, consulte CREATE INDEX (Transact-SQL).