我们通常在做项目数据库建表时, 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 可节省空间并略微提升性能。
总结:选择时需根据业务中可能出现的最大数值范围来决定,避免因范围不足导致溢出错误,同时也考虑存储空间的合理利用。