You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

存储小范围整数值应选用哪种Postgres数据类型

Postgres小范围整数存储选型说明

int2完全适配你的需求

int2(也叫smallint)是Postgres提供的2字节整数类型,取值范围是-32768到32767,完全覆盖你提到的1~10、最大值32的使用场景,完全可以正常使用,不存在溢出风险。

没有比int2更小的原生整数类型

Postgres原生并没有提供1字节长度的整数类型(类似部分数据库的TINYINT),你能用到的原生整数类型里最小的就是2字节的int2,没有更小的适配类型可选。

几个实用的注意点

  • 别为了省1字节硬用其他类型替代:比如用char(1)存数字、或者拆分位存到布尔类型里,这类操作会引入额外的类型转换开销,还会大幅提升维护成本,完全得不偿失。
  • 注意数据对齐的隐藏开销:如果你的表结构里还有int4(4字节)、int8(8字节)这类更长的字段,Postgres会做数据对齐填充,这时候你用int2省下的2字节会被自动填充的空白空间吃掉,实际不会节省存储空间。这种场景下直接用int4反而更灵活,也不用担心后续业务扩展后取值超过int2范围的问题。
  • 如果你确实对存储空间有极致要求,且表内有大量这类小整数字段,可以考虑用枚举类型,或者把多个小整数按位打包存到同一个int2/int4字段里,但这类方案需要你在业务代码里额外处理读写逻辑,复杂度高,没有特殊需求不推荐。

内容的提问来源于stack exchange,提问作者Rpj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:45:03