Depende do seu motor. O senso comum é que as leituras são baratas, alguns bytes aqui e ali não afetarão significativamente o desempenho de um banco de dados de tamanho pequeno a médio.
Mais importante, depende dos usos para os quais você colocará a chave primária. Seriais inteiros têm a vantagem de serem simples de usar e implementar. Eles também, dependendo da implementação específica do método de serialização, têm a vantagem de serem deriváveis rapidamente , pois a maioria dos bancos de dados armazena o número de série em um local fixo, em vez de derivá-lo rapidamenteSelect max(ID)+1 from foo
.
A questão é: como uma chave de 5 caracteres apresenta um "valor significativo" para você e para o aplicativo? Como esse valor é criado e leva mais ou menos tempo do que encontrar um número de série incremental. Embora exista uma quantidade trivial de espaço economizado em alguns números inteiros, a grande maioria dos sistemas ignorará essa economia de espaço.
Não há implicações no desempenho, exceto que o esquema de caracteres exige que nunca exista um mecanismo automático, pois suas "chaves" são inseparáveis. Para seu domínio específico, não se preocupe com chaves artificiais e use apenas chinês, japonês e tailandês como nomes de chave. Embora você não possa garantir exclusividade em relação a qualquer aplicativo possível, no seu escopo, é muito mais razoável usá-los em vez de abreviações horríveis e forçadas de 5 caracteres. Não há impactos significativos no desempenho até você chegar aos milhões de tuplas.
Como alternativa, se você está apenas rastreando por país de origem e não por cozinhas regionais específicas (cantonês, sichuan, siciliano, umbriano, calabrês, iucatecano, oaxacano etc.), sempre pode usar os códigos ISO 3166 .
Se eu tiver 10.000 receitas, a diferença entre uma chave de 5 e 20 caracteres não começa a somar?
O espaço é barato . Quando você estiver falando de 10.000.000 de receitas nas quais está executando operações OLAP, talvez. Com 10 mil receitas, você está vendo 150 mil de espaço.
Mas, novamente, depende. Se você possui muitos milhões de registros e faz junções neles, faz sentido desnormalizar a pesquisa de algo tão trivial (em uma visão materializada). Para todos os fins práticos, a eficiência de junção relativa em uma máquina moderna entre uma chave de 5 caracteres e uma chave de comprimento variável é tão semelhante a ser idêntica. Felizmente, vivemos em um mundo de CPU e disco abundantes. Os desagradáveis são muitas junções e ineficiência de consulta, em vez de comparação caractere por caractere. Com isso dito, sempre teste .
As coisas de P&T desse nível são tão dependentes do banco de dados que as generalizações são extremamente difíceis. Crie dois modelos de amostra do banco de dados, preencha-os com o número estimado de registros e veja qual é mais rápido. Na minha experiência, o tamanho dos caracteres não faz uma grande diferença em comparação com bons índices, boas configurações de memória e outros elementos críticos de ajuste de desempenho.