По какой-то причине индекс не используется для "?"оператор.
Давайте возьмем этот пример https://schinckel.net/2014/05/25/querying-json-in-postgres/:
CREATE TABLE json_test (
id serial primary key,
data jsonb
);
INSERT INTO json_test (data) VALUES
('{}'),
('{"a": 1}'),
('{"a": 2, "b": ["c", "d"]}'),
('{"a": 1, "b": {"c": "d", "e": true}}'),
('{"b": 2}');
И создадим индекс.
create index json_test_index on public.json_test using gin (data jsonb_path_ops) tablespace pg_default;
Затем взглянем на планследующий запрос:
SELECT * FROM json_test WHERE data ? 'a';
Будет Seq Scan, в то время как я ожидаю сканирования индекса.Может, кто-нибудь посоветует, что здесь не так?