valores type tamaño smallint mediumint longitud long mysql

type - tamaño de int mysql



BIGINT rendimiento de mysql en comparación con INT (1)

Para responder a su pregunta: sí, obtendrá menos rendimiento. Obviamente, cuanto más grande sea el tipo, cuanto más grande sea la tabla, más lentas serán las consultas (más E / S, índices más grandes, mayor tiempo de acceso, menos probabilidades de que el resultado entre en las distintas memorias caché, etc.). Así que como regla general: siempre use el tipo más pequeño que se ajuste a sus necesidades.

Dicho esto, el rendimiento no importa . ¿Por qué? Porque cuando llegas a un punto donde desbordes un INT, entonces BIGINT es la única solución y tendrás 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 de filas), tendrá mayores problemas de rendimiento, y la sobrecarga de BIGINT en comparación con un INT será la menor de sus preocupaciones. .

Por lo tanto, considere los siguientes puntos:

  • Utilice UNSIGNED si no necesita valores negativos, eso duplicará el límite.
  • El valor máximo INT no registrado 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 muy rápido. (ver http://dev.mysql.com/doc/refman/5.1/en/integer-types.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 (vea http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )

Estoy tratando de averiguar si mi mesa obtendrá menos rendimiento si cambio la clave primaria a BIGINT (20). Por el momento, estoy usando INT (7) y ya tengo unas 300,000 entradas con ID grandes (7 u 8 dígitos) . Ya busqué mucho, pero solo descubrí que usa más espacio en el disco (lo cual es obvio).

Todas mis identificaciones tienen 7 dígitos ahora, pero mi cliente quiere cambiar a 8 dígitos. No podré cambiar fácilmente el software en el futuro, así que pensé en usar BIGINT (20) ahora por las dudas. ¿Sería menos efectivo si uso BIGINT aunque todavía no lo necesite?

¿Alguien con experiencia haciendo esto tiene sugerencias con respecto a la velocidad y el rendimiento?