2011-01-22 24 views
35

He estado utilizando int (10) y me acabo de dar cuenta de que Wordpress usa bigint (20) - ¿Qué diferencia hay entre bigint (20) y int (10) para el incremento de id auto? ¿Cuál debería usar para la columna de identificación?MySQL: bigint Vs int

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 

Vs

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 

Gracias.

+0

la pregunta es, si es menos eficiente: http://stackoverflow.com/questions/9376610/bigint-mysql-performance-compared-to-int – rubo77

Respuesta

56

La diferencia es puramente en el valor máximo que puede ser almacenado (18,446,744,073,709,551,615 para la bigint (20) y 4294967295 para la int (10), creo) , según los detalles en la página de manual de MySQL Numeric Types.

Por cierto, el uso de (20) y (10) es en gran medida irrelevante a menos que esté usando ZEROFILL. (es decir: en realidad no cambia el tamaño del número almacenado, todo se reduce al tipo).

Sin embargo, en términos prácticos, debe tenerse en cuenta que no es probable que alcance ninguno de estos límites. pronto, a menos que sea un realmente blogger activo.

+6

Cabe señalar que bigint consume 8 bytes de almacenamiento vs 4 bytes para int. Un int firmado (mysql predeterminado) permite valores> 2 mil millones; por lo tanto, la gran mayoría de las veces es un excelente candidato para la columna de id. Por supuesto, a menos que en realidad se trate de grandes conjuntos de registros donde el tipo de columna/almacenamiento es una preocupación, bigint vs int no es terriblemente importante – virtualeyes

9

La única diferencia es el rango del tipo. INT tiene una longitud de 32 bits, mientras que BIGINT tiene una longitud de 64 bits, por lo tanto, puede almacenar números mucho más grandes, como 123456789123456789 (que no pueden almacenarse como INT).

He aquí una lista completa de los tipos de enteros MySQL: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html