bigint 和 int 在数据库建表中的差别

61 阅读2分钟

我们通常在做项目数据库建表时, bigint 和 int 是两种常用的整数类型。

那么它们主要区别体现在哪些方面,我们在建表时又该如何做出选择呢?

下面我们从存储范围和适用场景展开来讲。

存储范围不同

int(整数型):占 4 个字节(32 位),可表示的范围是( - 2,147,483,648 ~ 2,147,483,647)。

bigint(长整数型):通常占 8 个字节,可表示的范围是 - 9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807。

适用场景

我们可以知道长整型bigint的可表示范围是远大于int的,因此两者的对于不同场景下的适用程度是不同的。

int 适用于数值范围较小的场景:

年龄

数量(一般不会超过 20 亿)

状态码、分类 ID 等

bigint则用于数值范围较大的场景:

自增主键(当表记录可能超过 20 亿行时)

大额交易金额(如分单位存储的金额)

时间戳(某些高精度时间表示)

身份证号、手机号等长数字(但这类数据更推荐用字符串存储,避免因前导零丢失等问题)

由于 bigint占用空间更大,在索引、JOIN 操作等场景中,可能会比 int 略消耗更多内存和 IO 资源,但在现代数据库中,这种差异通常不明显。

若数值不会超过 int 范围,优先使用 int 可节省空间并略微提升性能。

总结:选择时需根据业务中可能出现的最大数值范围来决定,避免因范围不足导致溢出错误,同时也考虑存储空间的合理利用。