Requisitos: Durante uma entrevista recente, me perguntaram qual é a diferença entre int de banco de dados SQL Server e GUID como chave principal.Ambos têm prós e contras, por favor, pese-os de acordo com seus cenários reais de negócio。
Texto original 1:O login do hiperlink está visível.
Vantagens de usar INT como chave primária:
1. Requer um espaço de armazenamento de dados pequeno, apenas 4 bytes.
2. O desempenho do uso de INT para operações de inserção e atualização é melhor do que o do GUID, então usar int melhorará o desempenho da aplicação.
3. Operações de Indexação e Junção, int tem o melhor desempenho.
4. Fácil de lembrar.
5. Suporte para obter o valor mais recente por meio de uma função, como: Scope_Indentity().
Desvantagens de usar INT como chave primária
1. Se houver uma operação frequente de fusão de tabelas, pode haver duplicação de chaves primárias.
2. Existem restrições quanto ao escopo do uso dos dados de INT. Se houver uma grande quantidade de dados, pode exceder a faixa de valores INT.
3. É difícil processar tabelas de dados armazenadas distribuídas.
Vantagens de usar o GUID como chave principal:
1. É único.
2. Há poucas oportunidades para duplicação.
3. É adequado para operações de inserção e atualização em grandes volumes de dados.
4. A fusão de dados entre servidores é muito conveniente.
Desvantagens de usar o GUID como chave principal:
1. O espaço de armazenamento é grande (16 bytes), então ocupará mais tamanho de disco.
2. É difícil lembrar. O desempenho da operação de junção é inferior ao da int.
3. Não há uma função embutida para obter a chave primária GUID gerada mais recente.
4. O GUID como chave primária será adicionado a outros índices na tabela, reduzindo o desempenho.
Resumo:
O texto acima lista as vantagens e desvantagens dos tipos de dados GUID e INT como chaves primárias. Acho que para volumes grandes de dados, é recomendado usar o GUID como chave primária. considerando queUsar inteligência vai te dar o melhor desempenho possível。
Comentário: UsoO desempenho do GUID ordenado melhora muito。
Texto original dois:O login do hiperlink está visível.
Identidade é um tipo inteiro, decimal sem definição decimal, bigint é aceitável
O guid é binário fixo(16), que tem 16 bytes
A identidade é incrementada (ou subtraída), e o GUD é aleatório, então, à medida que os dados são inseridos,O primeiro não produzirá fragmentos, enquanto o segundo produzirá, e como o segundo está fora de ordem, a ordem deve ser ajustada ao ser inserido, então o primeiro geralmente é melhor que o segundo em termos de desempenho.
Uma grande quantidade de informações geralmente é dividida em tabelas, então a identidade ainda é mais adequada em muitos casos
Quanto ao significado da chave primária, isso depende de como você o considera ao projetar; para o processamento de dados em si, a chave primária não precisa ser significativa, e se você exigir que a chave primária contenha significado de negócio, então a chave primária de identidade é obviamente sem sentido, mas, de modo geral, é melhor separar o significado do negócio do processamento de dados, o negócio está sempre mudando, se você quiser trazer o significado para a chave principal do design da tabela, então o negócio muda, terá que ajustar mais a estrutura da tabela.
Texto original três:O login do hiperlink está visível.
1. Em sistemas que frequentemente precisam migrar dados, recomenda-se o uso do Guid. E adicionar índices não agrupados aos campos de chave estrangeira, ou seja, campos usados para consultas de junção, é de grande benefício para melhorar o desempenho. O campo da condição onde também pode ser adicionado conforme apropriado para índices não agrupados.
2. Ao usar o tipo Guid como chave primária, o tipo de dado deve ser uniqueidentifier e certifique-se de memorizá-loCancele a chave primária "Índices agregados”
3. Para sistemas que não precisam ser migrados, ou sistemas pequenos, ainda é muito conveniente usar a int como chave primária, e ainda há uma certa melhoria na eficiência.
(Fim)
|