Ссылаясь на qaru.site/info/37099/..., я пытаюсь применить индексы gin к ключам в объектах массива в Postgres 9.4, но я не получаю результаты как говорится в первом ответе.
Вы можете исправить ошибку?
Следующие шаги были написаны ниже.
Часть 1: Создание таблицы и индексов
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"}]');
Часть 2: Запрос
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)