【发布时间】:2016-01-23 06:20:55
【问题描述】:
我正在尝试创建一个 Postgres GIN 索引以加快以下查询:
CREATE TABLE foo (
id serial primary key,
a jsonb not null
);
insert into foo(a) values
('[{"b": "aaa"}, {"b": "ddd"}]'::jsonb),
('[{"b": "aaa"}, {"b": "aaa"}]'::jsonb),
('[{"b": "aaa"}]'::jsonb),
('[{"b": "aaa"}]'::jsonb),
('[{"b": "aaa"}]'::jsonb),
('[{"b": "bbb"}]'::jsonb),
('[{"b": "bbb"}]'::jsonb),
('[{"b": "bbb"}]'::jsonb),
('[{"b": "ccc"}]'::jsonb),
('[]'::jsonb);
select distinct id from (
select id, jsonb_array_elements(a)->>'b' as b from foo
) t where t.b = 'aaa'
在 Postgres 中这样的事情是可能的吗?我也对其他选择持开放态度。不幸的是,我无法规范化表格,所以我需要使用我已经拥有的表格结构。
【问题讨论】:
标签: sql postgresql gwt-gin jsonb