[ PROMPT_NODE_23546 ]
schema-data-types
[ SKILL_DOCUMENTATION ]
## 选择合适的数据类型
使用正确的数据类型可以减少存储空间、提高查询性能并防止错误。
**错误示范(错误的数据类型):**
sql
create table users (
id int, -- 超过21亿会溢出
email varchar(255), -- 不必要的长度限制
created_at timestamp, -- 缺少时区信息
is_active varchar(5), -- 用字符串表示布尔值
price varchar(20) -- 用字符串表示数值
);
**正确示范(合适的数据类型):**
sql
create table users (
id bigint generated always as identity primary key, -- 最大支持900京
email text, -- 没有人为限制,性能与 varchar 相同
created_at timestamptz, -- 始终存储带时区的时间戳
is_active boolean default true, -- 1字节 vs 可变字符串长度
price numeric(10,2) -- 精确的十进制算术
);
关键准则:
sql
-- ID:使用 bigint,不要用 int(为未来预留空间)
-- 字符串:使用 text,除非需要约束,否则不要用 varchar(n)
-- 时间:使用 timestamptz,不要用 timestamp
-- 金额:使用 numeric,不要用 float(精度很重要)
-- 枚举:使用带检查约束的 text 或创建枚举类型
参考:[数据类型 (Data Types)](https://www.postgresql.org/docs/current/datatype.html)