Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ GaussDB(DWS)/ Perguntas frequentes/ Uso do banco de dados/ Quais são as diferenças entre restrições únicas e índices únicos?
Atualizado em 2024-05-09 GMT+08:00

Quais são as diferenças entre restrições únicas e índices únicos?

  • Os conceitos de uma restrição única e um índice único são diferentes.

    Uma restrição única especifica que os valores em uma coluna ou um grupo de colunas são todos exclusivos. Se DISTRIBUTE BY REPLICATION não for especificado, a tabela de colunas que contém apenas valores exclusivos deve conter colunas de distribuição.

    Um índice único é usado para garantir a exclusividade de um valor de campo ou a combinação de valores de vários campos. CREATE UNIQUE INDEX cria um índice único.

  • As funções de uma restrição única e de um índice único são diferentes.

    Restrições são usadas para garantir a integridade dos dados e índices são usados para facilitar a consulta.

  • Os usos de uma restrição única e um índice único são diferentes.
    1. Ambas as restrições únicas e índices únicos podem ser usados para garantir a exclusividade dos valores da coluna que podem ser NULL.
    2. Quando uma restrição única é criada, um índice único com o mesmo nome é criado automaticamente. O índice não pode ser excluído separadamente. Quando a restrição é excluída, o índice é automaticamente excluído. Uma restrição única usa um índice único para garantir a exclusividade dos dados. As tabelas de armazenamento de linha do GaussDB(DWS) suportam restrições únicas, mas as tabelas de armazenamento de coluna não.
    3. Um índice único criado é independente e pode ser excluído separadamente. Atualmente no GaussDB(DWS), índices únicos só podem ser criados usando B-Tree.
    4. Se você quiser ter uma restrição única e um índice único em uma coluna, e eles podem ser excluídos separadamente, você pode criar um índice único e, em seguida, uma restrição única com o mesmo nome.
    5. Se um campo em uma tabela deve ser usado como uma chave estrangeira de outra tabela, o campo deve ter uma restrição única (ou é uma chave primária). Se o campo tiver apenas um índice único, um erro será relatado.

Exemplo: crie um índice composto para duas colunas, que não precisa ser um índice único.

1
2
CREATE TABLE t (n1 number,n2 number);
CREATE INDEX t_idx ON t(n1,n2);

Você pode usar o índice t_idx criado no exemplo anterior para criar uma restrição única t_uk, que é exclusiva apenas na coluna n1. Uma restrição única é mais rigorosa do que um índice único.

1
ALTER TABLE t ADD CONSTRAINT t_uk UNIQUE (n1) USING INDEX t_idx;