2010-05-22 34 views
6

Tengo una tabla de usuarios simples, supongo que el número máximo de usuarios que voy a tener es de 300,000.Mysql middle int vs. int performance

Actualmente estoy usando:

CREATE TABLE users 
(
     id INT UNSIGNED AUTOINCREMENT PRIMARY KEY, 
     .... 

Por supuesto que tengo muchas otras mesas para el cual los usuarios (id) es una clave externa.

He leído que dado que la identificación no va a utilizar el máximo completo de INT, es mejor utilizar: MEDIUMINT y le dará un mejor rendimiento.

¿Es verdad?

(estoy usando MySQL en Windows Server 2008)

+1

ver http://stackoverflow.com/questions/1157371/meaning-of-3-byte-numeric-in-mysql-mediumint –

Respuesta

10

Considero usar MEDIUMINT a veces ... en filas de 300 K. .. MEDIUMINT le da suficiente espacio hasta 16M filas (sin firmar).

No es solo sobre "tamaño de tabla más pequeño" cuando usas índices ... la diferencia puede ser enorme en una tabla de filas de 27M ... cambiar 2 columnas de INT a MEDIUMINT me ahorró 1GB (índices + datos de tabla) pasó de 2.5GB a 1.5 GB.

3

No debería haber una diferencia de rendimiento, la única ventaja que se obtiene es un poco más pequeño tamaño de la tabla. De todos modos, por solo 300,000 filas, no debería tener que preocuparse.

5

Esto se llama micro-optimización y no es un problema.
Trate de preguntar (en primer lugar) las preguntas de rendimiento basadas únicamente en la experiencia real, no en la imaginación. Y perfiles es siempre para ayudar a distinguir uno de otro.

En cuanto a la "300k max": en la vida real, las cifras tienden a crecer inesperadamente. ¿Por qué cavar un obstáculo para ti?