Diário do DBA

Quantas Chaves Estrangeiras posso Colocar em uma única tabela?

Diário do DBA

Pergunta: Quantas chaves estrangeiras se pode colocar em uma tabela?

Recentemente em uma palestra de SQL Server um aluno perguntou ao palestrante, e a resposta foi 253, só que a resposta foi muito curta e sem explicação, resolvi pesquisar um pouco mais em casa e encontrei mais informações que gostaria de compartilhar aqui com vocês.

Resposta: SQL Server 2014 e as versões anteriores, o máximo de quantidade de chaves estrangeiras em uma tabela é de 253, porém essa limitação muda no SQL Server 2016.

Para entender as limitações no SQL Server 2016 precisamos entender dois conceitos importantes.

  1. Referências de Chave Estrangeira de Saída – Uma coluna em uma tabela referindo-se a outras colunas da tabela.
  2. Referências de Chave Estrangeira de Entrada – Uma coluna em uma tabela que é referenciada por outras colunas da tabela.

A definição pode ter ficado um tanto confusa, então vou melhorar isso mostrando na imagem abaixo:

FK Tabela SQL Server

Agora que entendemos melhor, vamos voltar a nossa pergunta inicial.

Uma tabela pode fazer referência a um máximo de 253 outras tabelas e colunas como chaves externas (Referências de Chave Estrangeira de Saída). O SQL Server 2016 aumenta o limite para o número de outras tabelas e colunas que podem fazer referência a colunas em uma única tabela (Referências de Chave Estrangeira de Entrada), de 253 para 10.000. No entanto, auto referenciamento FK (onde tabela coluna está referenciando-se na mesma tabela) ainda está limitado a 253 em todas as versões do SQL Server.

Aqui está algumas limitações que encontrei no Books Online

  • São suportadas mais de 253 referências FK para operações DELETE e UPDATE DML. Operações MERGE não são suportadas.
  • Uma tabela com uma referência FK para si mesmo ainda está limitada a 253 referências de chaves estrangeiras.
  • Mais de 253 referências FK não estão disponíveis atualmente para índices de armazenamento de colunas (column store indexes), tabelas com otimização de memória (memory-optimized tables) ou Stretch Database.
Quantas Chaves Estrangeiras posso Colocar em uma única tabela?
The following two tabs change content below.

Wesley Mota

DBA SQL Server
Profissional graduado em Banco de Dados e Sistemas de Informação com mais de 7 anos de experiência em empresas de software. Certificado MCSA Microsoft SQL Server possui intensa vivência em administração de banco de dados, Tunning, Performance SQL Server, levantamento de melhorias e monitoramento de banco de dados e servidores SQL Server. Consultoria SQL Server em diversos clientes no Brasil e ao redor do mundo. Escritor no blog dbasqlserverbr.com.br/blog. Onde compartilha conhecimento, experiências e dicas de performance para DBAs SQL Server. Conhecimentos em Oracle e ambientes de alta disponibilidade. Desenvolvimento de softwares web e mobile.Gerenciamento de equipe e projetos.

Latest posts by Wesley Mota (see all)