Para responder à sua pergunta:sim, ele terá menos desempenho. Obviamente, quanto maior o tipo, maior a tabela, mais lentas as consultas (mais E/S, índices maiores, tempo de acesso mais longo, resultado menos provável de caber nos vários caches, e assim por diante). Então, como regra geral:sempre use o menor tipo que se encaixa que você precisa.
Dito isso, o desempenho não importa . Por quê? Porque quando você chega a um ponto em que transborda um INT, então BIGINT é a única solução e você terá que conviver com isso. Também nesse ponto (considerando que você está usando um PK de incremento automático, você terá mais de 4 bilhões rows), você terá problemas de desempenho maiores e a sobrecarga de um BIGINT em comparação com um INT será a menor das suas preocupações.
Portanto, considere os seguintes pontos:
- Use UNSIGNED se você não precisar de valores negativos, isso dobrará o limite.
- O valor máximo de UNSIGNED INT é 4.294.967.295. Se você estiver usando um PK de incremento automático e você tiver apenas 300.000 entradas, não precisa se preocupar . Você pode até usar um MEDIUMINT no momento, a menos que esteja planejando um crescimento realmente muito rápido. (consulte http://dev.mysql.com/doc /refman/5.1/en/integer-types.html )
- O número entre parênteses após o tipo não afeta o valor máximo do tipo . INT(7) é o mesmo que INT(8) ou INT(32). É usado para indicar a largura de exibição se você especificar ZEROFILL (consulte http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )