MySQL:bigint 与 int

Posted

技术标签:

【中文标题】MySQL:bigint 与 int【英文标题】:MySQL: bigint Vs int 【发布时间】:2011-06-13 18:07:09 【问题描述】:

我一直在使用 int(10) 并且刚刚注意到 Wordpress 使用 bigint(20) - 使用 bigint(20) 和 int(10) 进行 id 自动递增有什么不同? id 列应该使用哪一个?

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

对比

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

谢谢。

【问题讨论】:

问题是,如果性能较差:***.com/questions/9376610/… 【参考方案1】:

区别纯粹在于可以存储的最大值(我相信 bigint(20) 为 18,446,744,073,709,551,615,int(10) 为 4,294,967,295),根据 mysql Numeric Types 手册页上的详细信息。

顺便说一句,除非您使用 ZEROFILL,否则 (20) 和 (10) 的使用在很大程度上是无关紧要的。 (即:它实际上并没有改变存储数字的大小 - 这完全取决于类型。)

但是,实际上应该注意的是,除非您是真正活跃的博主,否则您不太可能很快达到这些限制中的任何一个.

【讨论】:

需要注意的是,bigint 消耗 8 个字节的存储空间,而 int 消耗 4 个字节。有符号(mysql 默认)int 允许值 > 20 亿;因此,在绝大多数情况下,它都是 id 列的绝佳候选者。当然,除非您实际上是在处理需要关注列类型/存储的巨大记录集,否则 bigint 与 int 并不是非常重要【参考方案2】:

唯一的区别是类型的范围。 INT 是 32 位长,而 BIGINT 是 64 位长,因此它可以存储更大的数字,例如 123456789123456789(不能存储为 INT)。

这里是 MySQL 整数类型的完整列表:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

【讨论】:

以上是关于MySQL:bigint 与 int的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 中的类型:BigInt(20) 与 Int(20)

mysql解释类型索引与所有性能问题

sparksql写入表中bigint类型显示null

MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的差别 图 浮点型:命令

mysql中bigintintmediumintsmallint与tinyint的取值范围

小5聊Mysql基础之bigint和bigint unsigned的区别