Para responder a su pregunta:sí, tendrá menos rendimiento. Obviamente, cuanto más grande sea el tipo, más grande será la tabla, más lentas serán las consultas (más E/S, índices más grandes, tiempo de acceso más largo, es menos probable que el resultado encaje en las distintas cachés, etc.). Entonces, como regla general:use siempre el tipo más pequeño que se ajuste a lo que necesitas.
Dicho esto, el rendimiento no importa . ¿Por qué? Porque cuando llega a un punto en el que desborda un INT, entonces BIGINT es la única solución y tendrá que vivir con eso. También en ese punto (considerando que está usando un PK de incremento automático, tendrá más de 4 mil millones filas), tendrá mayores problemas de rendimiento y la sobrecarga de un BIGINT en comparación con un INT será la menor de sus preocupaciones.
Entonces, considere los siguientes puntos:
- Use UNSIGNED si no necesita valores negativos, eso duplicará el límite.
- El valor máximo de UNSIGNED INT es 4.294.967.295. Si está utilizando un PK de incremento automático y solo tiene 300.000 entradas, realmente no necesita preocuparse . Incluso podría usar un MEDIUMINT en este momento, a menos que esté planeando un crecimiento realmente rápido. (consulte http://dev.mysql.com/doc /refman/5.1/en/tipos-entero.html )
- El número entre paréntesis después del tipo no afecta el valor máximo del tipo . INT(7) es lo mismo que INT(8) o INT(32). Se usa para indicar el ancho de visualización si especifica ZEROFILL (consulte http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )