| From: | Tomasz Szymański <lime129(at)gmail(dot)com> |
|---|---|
| To: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
| Cc: | pgsql-performance(at)postgresql(dot)org |
| Subject: | Re: GIN JSONB path index is not always used |
| Date: | 2023-10-23 10:33:46 |
| Message-ID: | 8D07B8A0-4D68-4A97-B1B3-6B0561CB4A11@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
Sorry for missing analyze and buffers, we did only had these plans at the time, providing ones performed with such:
When it does us an index:
----------------------------------------------------------------------------------------------------------------------------------+
Limit (cost=255.29..329.26 rows=21 width=0) (actual time=8.023..8.025 rows=1 loops=1)
Buffers: shared hit=54 read=6
I/O Timings: read=7.094
-> Bitmap Heap Scan on account_user (cost=255.29..16293.12 rows=4553 width=0) (actual time=8.022..8.023 rows=1 loops=1)
Recheck Cond: (private_metadata @> '{"somekey": "somevalue"}'::jsonb)
Heap Blocks: exact=2
Buffers: shared hit=54 read=6
I/O Timings: read=7.094
-> Bitmap Index Scan on user_p_meta_idx (cost=0.00..254.15 rows=4553 width=0) (actual time=7.985..7.985 rows=2 loops=1) |
Index Cond: (private_metadata @> '{"somekey": "somevalue"}'::jsonb)|
Buffers: shared hit=52 read=6
I/O Timings: read=7.094
Planning Time: 1.134 ms
Execution Time: 8.065 ms
----------------------------------------------------------------------------------------------------------------------------------+
When it does not:
----------------------------------------------------------------------------------------------------------------------------------+
Limit (cost=0.00..1184.30 rows=21 width=4) (actual time=1567.136..1619.956 rows=1 loops=1)
Buffers: shared hit=199857
-> Seq Scan on account_user (cost=0.00..256768.27 rows=4553 width=4) (actual time=1567.135..1619.953 rows=1 loops=1)
Filter: (private_metadata @> '{"somekey": "somevalue"}'::jsonb)
Rows Removed by Filter: 4592408
Buffers: shared hit=199857
Planning Time: 0.072 ms
Execution Time: 1619.972 ms
----------------------------------------------------------------------------------------------------------------------------------+
> Should we assume that not using the index is much slower (otherwise, why would you be asking the question?)?
Yes, the issue is the sequence scan being expensive and slow.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jeff Janes | 2023-10-23 14:05:01 | Re: GIN JSONB path index is not always used |
| Previous Message | Alexander Okulovich | 2023-10-19 09:58:30 | Re: Postgres 15 SELECT query doesn't use index under RLS |