I have been trying to create an index on a jsonb document all morning but I can't see any benefit from the index.
My table:
CREATE TABLE modelling.triangle(id serial, data JSONB)
Here is my insert:
INSERT INTO modelling.triangle(data)
SELECT
json_build_object(
'x', generator.x,
'y', generator.y,
'array', generator.array_data)::jsonb
FROM (
SELECT
generate_series(1,10000) x,
generate_series(1,10000) y,
array_to_json(array_agg(array_elements)) array_data
FROM (
SELECT
generate_series(1,99) as key,
generate_series(1,99) as value
) array_elements
) as generator
And the index:
CREATE INDEX idxgintags ON modelling.triangle USING gin ((data -> 'x') jsonb_path_ops);
And the select:
EXPLAIN ANALYZE
SELECT data->'array'
FROM modelling.triangle
WHERE data@>'{"x":10}'
Thank you.