参考原始stackoverflow问题,我正在尝试在Postgres 9.4中将gin索引应用于数组中对象的键,但结果与第一个回答中所述不符。
能否请您纠正错误?
下面是我所遵循的步骤。
第一部分:创建表和索引。
能否请您纠正错误?
下面是我所遵循的步骤。
第一部分:创建表和索引。
CREATE TABLE tracks (id serial, artists jsonb);
CREATE INDEX tracks_artists_gin_idx ON tracks USING gin (artists);
INSERT INTO tracks (id, artists) VALUES (1, '[{"name": "blink-182"}]');
INSERT INTO tracks (id, artists) VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]');
第二部分:查询
SELECT * FROM tracks WHERE artists @> '{"name": "The Dirty Heads"}';
id | artists
----+---------
(0 rows)
这个查询没有结果。
我也尝试过使用 jsonb_path_ops
GIN 索引。
替代的索引和查询:
DROP INDEX tracks_artists_gin_idx;
CREATE INDEX tracks_artistnames_gin_idx ON tracks USING gin (artists jsonb_path_ops);
SELECT * FROM tracks WHERE artists @> '{"name": "The Dirty Heads"}';
id | artists
----+---------
(0 rows)