首页/数据/SQL 速查/PostgreSQL JSON 与 JSONB 选型
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

PostgreSQL JSON 与 JSONB 选型

两种 JSON 类型的取舍:jsonb 是解析后的二进制格式,支持索引与高效包含查询;json 原样保存文本,只适合“原样还原”场景。

SQL 速查数据更新于 2026-10-12

对比

对比
-- jsonb:建 GIN 索引、支持 @> 与 ? 运算符
CREATE TABLE events (id bigint, doc jsonb);
CREATE INDEX idx_events_doc ON events USING gin (doc jsonb_path_ops);

-- json:保留原文(键顺序、空白、重复键)
CREATE TABLE raw_logs (id bigint, body json);
jsonb不保留键顺序与空白;重复键只留最后一个;可索引;函数与运算符更丰富
json原样保存输入文本(含重复键与格式);无索引支持;每次访问需要解析
建议默认 jsonb;只有必须逐字节还原或审计原始报文时用 json

易错点

  • 把 json 列当 jsonb 用:@>、?、GIN 索引都不可用,迁移时改类型成本高,建表前就想清楚
  • jsonb 不保留键顺序,展示给用户的“原样 JSON”场景要用 json 或在应用层自定义序列化

数据来源与参考

  • PostgreSQL Documentation · JSON Types
  • PostgreSQL Documentation · JSON Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌