No design do banco de datos, frequentemente usamos guid ou int como chave principal, e de acordo com o conhecimento que aprendemos, sempre sentimos que int é mais eficiente como chave principal, mas isso é impossível sem testes cuidadosos
Explique o motivo. Aconteceu que, durante a otimização do banco de dados hoje, encontrei esse problema, então fiz um teste.
Ambiente de Teste:
PC de mesa Pentiun(R) 4 CPU 3.06GHz Win XP profissional 1,5G DE DDR DE RAM SQL Server 2005 Pessoal
Processo de Teste:
Primeiro, crie um banco de dados de teste, teste
Os resultados dos testes são os seguintes:
Como mencionado acima, a eficiência de usar int como chave primária é melhorada em comparação com o uso do guid como chave principal, especialmente quando há uma consulta de conexão e registros de exclusão.
Além disso, na consulta de dados com a chave principal no GUID hoje, o timeout da consulta ocorreu repetidamente devido ao aninhamento de vários subresultados de consulta. Portanto, sou a favor de usar int como chave principal, e não concordo com GUID como chave principal. As opiniões acima representam opiniões pessoais, e todos são bem-vindos para expressar suas opiniões e explicar as vantagens e desvantagens de GHID e INT como a principal chave.
Testes de acompanhamento:
Após serem lembrados pelos irmãos, um índice não agrupado foi adicionado a duas subtabelas hoje:
CRIAR Index_Detail_Guid DE ÍNDICE NÃO AGRUPADO NO Test_Guid_Detail(Guid) CRIAR Index_Detail_id DE ÍNDICE NÃO AGRUPADO EM Test_Int_Detail(ID) Depois, fiz uma consulta interna de conexão e descobri que, como @Xu Shaoxia disse, a eficiência realmente não é óbvia o suficiente para indicar mais de 50%, basicamente apenas cerca de 23% de melhora, o que ainda é aceitável.
Portanto, é recomendado
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 identifier, e lembre-se de cancelar o "índice agregado" da chave primária
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.
|