[ PROMPT_NODE_25134 ]
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(精度很重要)
-- 枚举:使用带 check 约束的 text 或创建枚举类型
参考:[数据类型](https://www.postgresql.org/docs/current/datatype.html)