Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como criar um índice exclusivo em uma tabela no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL. Um índice exclusivo garante que a chave de índice não contém nenhum valor duplicado e, portanto, cada linha na tabela é exclusiva de algum modo. Não há diferenças significativas entre a criação de uma restrição UNIQUE e a criação de um índice exclusivo que seja independente de uma restrição. A validação de dados ocorre da mesma maneira e o otimizador de consulta não diferencia um índice exclusivo criado por uma restrição ou criado manualmente. No entanto, a criação de uma restrição UNIQUE na coluna deixa claro o objetivo do índice. Para obter mais informações sobre restrições UNIQUE, consulte Restrições Exclusivas e Restrições de Verificação.
Ao criar um índice exclusivo, você pode definir uma opção para ignorar chaves duplicadas. Se essa opção estiver definida como Sim e você tentar criar chaves duplicadas adicionando dados que afetem várias linhas (com a instrução INSERT), a linha que contém uma duplicata não será adicionada. Se estiver definido como Não, toda a operação de inserção falhará e todos os dados serão revertidos.
Observação
Você não poderá criar um índice exclusivo em uma única coluna se essa coluna contiver NULL em mais de uma linha. Da mesma forma, você não poderá criar um índice exclusivo em várias colunas se a combinação de colunas contiver NULL em mais de uma linha. Eles são tratados como valores duplicados para fins de indexação.
Nesse Tópico
Antes de começar:
Para criar um índice exclusivo em uma tabela, usando:
Antes de começar
Benefícios de um índice exclusivo
Índices exclusivos multicolumn garantem que cada combinação de valores na chave de índice seja exclusiva. Por exemplo, se um índice exclusivo for criado em uma combinação de colunas LastName, FirstName e MiddleName , nenhuma duas linhas na tabela poderá ter a mesma combinação de valores para essas colunas.
Desde que os dados em cada coluna sejam exclusivos, você pode criar um índice clusterizado exclusivo e vários índices não clusterizados exclusivos na mesma tabela.
Índices exclusivos garantem a integridade dos dados das colunas definidas.
Índices exclusivos fornecem informações adicionais úteis para o otimizador de consulta que pode produzir planos de execução mais eficientes.
Implementações típicas
Índices exclusivos são implementados das seguintes maneiras:
Restrição: PRIMARY KEY ou UNIQUE
Quando você cria uma restrição PRIMARY KEY, um índice clusterizado exclusivo na coluna ou colunas é criado automaticamente se um índice clusterizado na tabela ainda não existe e você não especifica um índice não clusterizado exclusivo. A coluna de chave primária não pode permitir valores NULL.
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 e restrições de chave primária e estrangeira.
Índice independente de uma restrição
Vários índices não clusterizados exclusivos podem ser definidos em uma tabela.
Para obter mais informações, consulte CREATE INDEX (Transact-SQL).
Exibição indexada
Para criar uma exibição indexada, um índice clusterizado exclusivo é definido em uma ou mais colunas de exibição. A exibição é executada e o conjunto de resultados é armazenado no nível folha do índice da mesma forma que os dados da tabela são armazenados em um índice clusterizado. Para obter mais informações, veja Criar exibições indexadas.
Limitações e restrições
Um índice exclusivo, uma restrição UNIQUE ou uma restrição PRIMARY KEY não poderão ser criados, se existirem valores de chave duplicados nos dados.
Um índice não clusterizado exclusivo pode conter colunas não chave incluídas. Para obter mais informações, consulte Create Indexes with Included Columns.
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 exclusivo usando o Designer de Tabela
No Pesquisador de Objetos, expanda o banco de dados que contém a tabela na qual você deseja criar um índice exclusivo.
Expanda a pasta Tabelas .
Clique com o botão direito do mouse na tabela na qual você deseja criar um índice exclusivo e selecione Design.
No menu Designer de Tabela , selecione Índices/Chaves.
Na caixa de diálogo Índices/Chaves , clique em Adicionar.
Selecione o novo índice na caixa de texto Chave Primária/Exclusiva Selecionada ou Índice .
Na grade principal, em (Geral), selecione Tipo e escolha Índice na lista.
Selecione Colunas e, em seguida, clique nas reticências (...).
Na caixa de diálogo Colunas de Índice , em Nome da Coluna, selecione as colunas que você deseja indexar. Você pode selecionar até 16 colunas. Para obter um desempenho ideal, selecione apenas uma ou duas colunas por índice. Para cada coluna selecionada, indique se o índice organiza valores dessa coluna em ordem crescente ou decrescente.
Quando todas as colunas do índice forem selecionadas, clique em OK.
Na grade, sob (Geral), selecione É Exclusivo e escolha Sim na lista.
Opcional: na grade principal, em Designer de Tabela, selecione Ignorar Chaves Duplicadas e escolha Sim na lista. Faça isso se quiser ignorar as tentativas de adicionar dados que criariam uma chave duplicada no índice exclusivo.
Clique em Fechar.
No menu Arquivo , clique em Salvartable_name.
Criar um índice exclusivo usando o Pesquisador de Objetos
No Pesquisador de Objetos, expanda o banco de dados que contém a tabela na qual você deseja criar um índice exclusivo.
Expanda a pasta Tabelas .
Expanda a tabela na qual você deseja criar um índice exclusivo.
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 de nome índice .
Marque a caixa de seleção Exclusivo .
Em Colunas de chave do índice, clique em Adicionar....
Na caixa de diálogo Selecionar Colunas detable_name, marque a(s) caixa(s) de seleção das colunas da tabela que devem ser adicionadas ao índice único.
Clique em OK.
Na caixa de diálogo Novo Índice , clique em OK.
Usando Transact-SQL
Para criar um índice exclusivo em uma tabela
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 -- Find an existing index named AK_UnitMeasure_Name and delete it if found IF EXISTS (SELECT name from sys.indexes WHERE name = N'AK_UnitMeasure_Name') DROP INDEX AK_UnitMeasure_Name ON Production.UnitMeasure; GO -- Create a unique index called AK_UnitMeasure_Name -- on the Production.UnitMeasure table using the Name column. CREATE UNIQUE INDEX AK_UnitMeasure_Name ON Production.UnitMeasure (Name); GO
Para obter mais informações, consulte CREATE INDEX (Transact-SQL).