From: | Julien Rouhaud <rjuju123(at)gmail(dot)com> |
---|---|
To: | ramikvl(at)gmail(dot)com |
Cc: | "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: jsonb Indexing |
Date: | 2021-09-17 14:00:15 |
Message-ID: | CAOBaU_a+XutdDfH_Qa3CQof0Dt=-EXyH5obmwDTXAxi6q1rVFw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi,
On Fri, Sep 17, 2021 at 9:55 PM <ramikvl(at)gmail(dot)com> wrote:
>
> I was wondering what I'm doing wrong. There are steps what I've tried:
>
> CREATE TABLE api (
> jdoc jsonb
> );
>
> INSERT INTO api (jdoc)
> VALUES ('{
> "guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
> "name": "Angela Barton",
> "is_active": true,
> "company": "Magnafone",
> "address": "178 Howard Place, Gulf, Washington, 702",
> "registered": "2009-11-07T08:53:22 +08:00",
> "latitude": 19.793713,
> "longitude": 86.513373,
> "tags": [
> "enim",
> "aliquip",
> "qui"
> ]
> }');
>
> CREATE INDEX idxgintags ON api USING GIN ((jdoc->'tags'));
>
> EXPLAIN ANALYZE SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc ->
> 'tags' ? 'qui';
>
> And the result is
>
> Seq Scan on api (cost=0.00..1.02 rows=1 width=64) (actual
> time=0.019..0.021 rows=1 loops=1)
> Filter: ((jdoc -> 'tags'::text) ? 'qui'::text)
>
> Planning Time: 0.115 ms
>
> Execution Time: 0.047 ms
>
> Do you know why Index Scan on idxgintag is not used?
Yes, because doing an index scan on a table containing a single row is
an order or magnitude less efficient than simply doing a sequential
scan. You should try to simulate something close to your production
data to see something interesting.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-09-17 14:05:06 | Re: pg_upgrade problem as locale difference in data centers |
Previous Message | Tom Lane | 2021-09-17 13:55:56 | Re: SELECT FOR UPDATE returns zero rows with CTE |