AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 82035
Accepted
AA.SC
AA.SC
Asked: 2014-11-06 22:58:29 +0800 CST2014-11-06 22:58:29 +0800 CST 2014-11-06 22:58:29 +0800 CST

Qual é a diferença entre as colunas is_unique e is_unique_constraint em sys.indexes

  • 772

Temos duas colunas is_uniquee is_unique_constraintpara restrições únicas sys.indexese quero esclarecer alguns conceitos com base nessas duas colunas

  1. A instrução de criação para ambos os tipos de índices é a mesma, exceto fill factoro valor da propriedade ou estou perdendo alguma coisa?
  2. Se a declaração 1 for verdadeira, por que temos duas colunas em sys.indexes para restrição exclusiva?
  3. Quando is_unique=1 is_unique_constraint =0e, em seguida, solte a instrução para o índice é
    DROP INDEX [index name] ON [dbo].[TableName] WITH ( ONLINE = OFF )

    E quando is_unique=1 is_unique_constraint =1e, em seguida, solte a instrução para o índice é
    ALTER TABLE [dbo].[TableName] DROP CONSTRAINT [IndexName]

    Por que?

  4. Onde usamos índice exclusivo e onde restrição exclusiva, qual é a melhor prática?

sql-server sql-server-2008-r2
  • 2 2 respostas
  • 1722 Views

2 respostas

  • Voted
  1. Best Answer
    Aasim Abdullah
    2014-11-07T00:55:56+08:002014-11-07T00:55:56+08:00

    O fato é que não há diferença prática entre uma restrição única e um índice único.

    1. Consultando sys.objects, você encontrará a restrição exclusiva listada como um objeto de restrição e seu índice relacionado pode ser encontrado durante a consulta sys.indexes, onde está marcado is_unique = 1, bem como is_unique_constraint = 1. Por outro lado, para índices únicos is_unique_constraint, o valor será zero (0).
    2. Ao criar uma restrição exclusiva, você pode usar a opção Fator de preenchimento para comparar com o índice exclusivo, onde você tem mais opções como FILLFACTOR, PAD_INDEX, IGNORE_DUP_KEY, DROP_EXISTING, and STATISTICS_NORECOMPUTE.
    3. A restrição exclusiva é mantida por meio de um índice exclusivo
    4. Assim como Padrão e Chave Primária, uma restrição exclusiva não pode ser desativada usando a sintaxe NOCHECK
    5. Para excluir um índice único com is_unique_constraint = 1, é necessário excluí-lo através da sintaxe DROP CONSTRAINT ao invés de DROP INDEX porque tal índice está associado a uma restrição única (objeto), então deve-se remover CONSTRAINT e o índice será descartado automaticamente.

    Como prática recomendada , se a exclusividade for necessária, aplique sempre a restrição exclusiva, em vez de criar apenas um índice exclusivo. Desta forma, você não pode descartar um índice único acidentalmente. Também desta forma, você pode documentar facilmente todas as restrições aplicadas.
    http://technet.microsoft.com/en-us/library/aa224827(v=sql.80).aspx

    • 4
  2. KidCode
    2014-11-07T02:58:25+08:002014-11-07T02:58:25+08:00

    Além da resposta dos aasims, a única grande diferença aqui Unique Indexé que não é um objeto de banco de dados. Enquanto a unique Constrainté um objeto.

    No entanto, além disso, não há outras diferenças importantes:

    • Ambos alcançam o mesmo desempenho
    • Ambos atingem o mesmo objetivo final.

    EDITAR:

    Por que você usaria índice exclusivo vs restrição, qual é a melhor prática?

    Não há uma prática recomendada de tamanho único aqui. Por uma razão principal (pelo menos). Uma restrição exclusiva permite apenas um valor nulo na coluna. No entanto, você pode criar um índice exclusivo sem incluir os nullvalores:

    Create unique Index MyUniqueIndex on Contacts (ContactId) where Email is not null
    

    Isso criaria o índice, mas SOMENTE onde os valores na coluna Email não são nulos.

    • 3

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve