如何获得PostgreSQL jsonb字段的大小?

mys*_*eim 12 postgresql jsonb

我在表中有一个带有jsonb字段的表.

CREATE TABLE data.items
(
  id serial NOT NULL,
  datab jsonb
)
Run Code Online (Sandbox Code Playgroud)

如何在这样的查询中获取此字段的大小:

select id, size(datab) from data.items
Run Code Online (Sandbox Code Playgroud)

dop*_*ude 23

对于用于存储的字节数:

select id, pg_column_size(datab) from data.items;

对于jsonb对象上的元素数量:

select id, jsonb_array_length(datab) from data.items;

  • 对于好奇的人,“pg_column_size”返回“用于存储特定值(可能压缩)的字节数”https://www.postgresql.org/docs/12/functions-admin.html (2认同)

tom*_*w__ 11

如果列使用扩展存储(TOAST 压缩),则应使用octet_length(datab::text)而不是pg_column_size