Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Este tópico descreve como criar um índice exclusivo em uma tabela no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. Um índice exclusivo garante que a chave de índice não contém valores duplicados e, portanto, cada linha na tabela é, de alguma forma, exclusiva. Não há diferenças significativas entre a criação de uma restrição UNIQUE e a criação de um índice exclusivo independente de uma restrição. A validação de dados ocorre da mesma maneira e o otimizador de consulta não diferencia entre 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 exclusivas, 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 afetam várias linhas (com a instrução INSERT), a linha que contém uma duplicata não será adicionada. Se estiver definido como Sem, toda a operação de inserção falhará e todos os dados serão revertidos.
Note
Não é possível criar um índice exclusivo em uma única coluna se essa coluna contiver NULL em mais de uma linha. Da mesma forma, não é possível criar um índice exclusivo em várias colunas se a combinação de colunas contiver NULL em mais de uma linha. Estes são tratados como valores duplicados para fins de indexação.
Neste tópico
Antes de começar:
Para criar um índice exclusivo em uma tabela, usando:
SQL Server Management Studio (Estúdio de Gestão do Servidor SQL)
Antes de começar
Benefícios de um índice único
Índices exclusivos de várias colunas garantem que cada combinação de valores na chave de índice seja exclusiva. Por exemplo, se for criado um índice único numa combinação das colunas LastName, FirstNamee MiddleName, nenhuma linha 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 podem produzir planos de execução mais eficientes.
Implementações Típicas
Os índices exclusivos são implementados das seguintes maneiras:
restrição PRIMARY KEY ou UNIQUE
Quando você cria uma restrição de CHAVE PRIMÁRIA, um índice clusterizado exclusivo na coluna ou colunas é criado automaticamente se um índice clusterizado na tabela ainda não existir e você não especificar 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 exclusivos não agrupados podem ser definidos em uma tabela.
Para obter mais informações, consulte CREATE INDEX (Transact-SQL).
Vista indexada
Para criar um modo de exibição indexado, 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 de folha do índice da mesma forma que os dados da tabela são armazenados em um índice clusterizado. Para obter mais informações, consulte Criar visões indexadas.
Limitações e Restrições
Não é possível criar um índice exclusivo, uma restrição UNIQUE ou uma restrição de CHAVE PRIMÁRIA 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 Criar um índice com colunas incluídas.
Segurança
Permissions
Requer 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 db_ddladmin e db_owner fixas.
Usando 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 rato na tabela na qual pretende criar um índice exclusivo e selecione Design.
No menu do Editor de Tabelas, 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 grelha principal, em (Geral), selecione Tipo e, em seguida, escolha Índice na lista.
Selecione Colunase, em seguida, clique nas reticências (...).
Na caixa de diálogo Colunas de Índice, em Nome da Coluna, selecione as colunas que deseja indexar. Você pode selecionar até 16 colunas. Para um desempenho ideal, selecione apenas uma ou duas colunas por índice. Para cada coluna selecionada, indique se o índice organiza os valores dessa coluna em ordem crescente ou decrescente.
Quando todas as colunas do índice estiverem selecionadas, clique em OK .
Na grelha, em (Geral) , selecione É Exclusivo e, em seguida, escolha Sim na lista.
Opcional: Na quadrícula principal, em Designer de Tabela, selecione Ignorar Chaves Duplicadas e, em seguida, 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 rato na pasta Índices, aponte para Novo Índicee selecione Índice Não Clusterizado....
Na caixa de diálogo Novo Índice, na página Geral, digite o nome do novo índice na caixa Nome do Índice.
Marque a caixa de seleção exclusivo.
Em Colunas de chave de índice, clique em Adicionar....
Na caixa de diálogo Selecionar Colunastable_name, selecione a(s) caixa(s) de seleção da(s) coluna(s) da tabela que deseja adicionar 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 AdventureWorks2022; GO -- Find an existing index named AK_UnitMeasure_Name -- on the Production.UnitMeasure table and delete it if found. IF EXISTS (SELECT name from sys.indexes WHERE name = N'AK_UnitMeasure_Name' AND object_id = OBJECT_ID(N'Production.UnitMeasure', N'U')) 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).