Desculpe pela minha terminologia incorreta (já que não sei como chamar isso).. importa (no que diz respeito ao desempenho) se a chave única (índice) começa em 0 e, por exemplo, em 100000?
Por exemplo, se eu tiver
ID | Brand
----------------
1 | BMW
2 | FERARRI
ou
ID | Brand
----------------
100000 | BMW
100001 | FERARRI
haverá alguma diferença para desempenho/consultas? Pergunto isso porque tenho uma função PHP que apaga tudo e insere novos valores. Assim, excluir/inserir/excluir/inserir faz com que o ID aumente cada vez mais, e tenho medo, se eventualmente encontrarei um problema? Ou isso não é um problema?
Seu banco de dados não deve se importar e, para ele, um número é um número neste contexto. O desempenho será o mesmo de qualquer maneira aqui.
Apenas certifique-se de selecionar um tipo de dados apropriado para ter espaço suficiente para "crescer" e não atingir os limites superiores desse tipo de dados em seu uso esperado (por exemplo, não use um
smallint
se você precisar seus IDs para ir para 2 bilhões).É possível que valores menores sejam um pouco mais eficientes. Mas se seu código é tão eficiente que um de seus maiores gargalos é o tamanho de suas chaves inteiras, você está muito, muito à frente do jogo e tem pouco a otimizar.
É possível que o banco de dados que você está usando use uma quantidade diferente de espaço para armazenar valores numéricos diferentes, onde números menores tendem a usar menos espaço. Nem todo banco de dados fará isso, mas alguns farão (por exemplo, o Oracle usa um número variável de bytes para representar números diferentes ). Se este for o caso do seu aplicativo, as linhas com chaves menores geralmente serão menores no disco, o que significa que você pode ler mais linhas por solicitação de E/S, ajustar mais chaves em cada bloco de índice e armazenar em cache mais linhas por kb de RAM. Potencialmente, você pode descobrir que reiniciar a chave permitiria usar um tipo de dados menor para a chave, mas isso é bastante improvável. Todos estes terão algum benefício de desempenho potencial.
Dito isso, o tamanho do benefício provavelmente será mínimo. Na maioria das tabelas, o tamanho da chave primária será uma pequena contribuição para o tamanho da linha, portanto, salvar um ou dois bytes em uma chave provavelmente levará a um pouco mais de espaço livre em cada página/bloco, o que anularia o benefício de desempenho. E mesmo que você obtenha um pouco mais de dados em cada página/bloco, é muito improvável que consiga medir a melhoria. Sim, pode ser um pouco mais provável que você encontre uma linha no cache, mas seria difícil quantificar uma melhoria tão pequena.