Re: Simple Query Elapsed Time ~ 3 hrs Using Bitmap Index/Heap Scan

From: Matthew Hall <mhall(at)mhcomputing(dot)net>
To: Fred Habash <fmhabash(at)gmail(dot)com>
Cc: pgsql-performance(at)lists(dot)postgresql(dot)org
Subject: Re: Simple Query Elapsed Time ~ 3 hrs Using Bitmap Index/Heap Scan
Date: 2018-06-05 14:42:20
Message-ID: C4D87070-2C8B-445E-A9FF-B534936BCD2B@mhcomputing.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Probably the cardinality of "vclf_number" is really bad. So the scan on that index is returning many million or billion rows and then you get a recheck which takes semi-forever. So you need an index on cl_value or both vclf_number and cl_value. If you know some properties of the values actually stored inside of those that will help.

Matthew Hall

> On Jun 5, 2018, at 7:17 AM, Fred Habash <fmhabash(at)gmail(dot)com> wrote:
>
> Trying to optimize the Elapsed Time (ET) of this query. Currently, it is hovering around 3 hrs.
>
> Running a 'vaccum analyse' had no effect on ET. Even forcing an 'indexonly' scan by disabling 'enable_seqscan', still around the 3 hrs.
> The table is around 4.6B rows,
> explain select cit_id, cl_value from reflink.citation_locators where cl_value = '1507617681' and vclf_number = 1 ;
> QUERY PLAN
> -----------------------------------------------------------------------------------------
> Bitmap Heap Scan on citation_locators (cost=5066559.01..50999084.79 rows=133 width=23)
> Recheck Cond: (vclf_number = 1)
> Filter: (cl_value = '1507617681'::text)
> -> Bitmap Index Scan on cl_indx_fk02 (cost=0.00..5066558.97 rows=493984719 width=0)
> Index Cond: (vclf_number = 1)
> (5 rows)
>
> reflink.citation_locators
> Table "reflink.citation_locators"
> Column | Type | Modifiers | Storage | Stats target | Description
> ------------------+--------------------------+-----------+----------+--------------+-------------
> cl_id | bigint | not null | plain | |
> cl_value | text | not null | extended | |
> vclf_number | integer | not null | plain | |
> cit_id | bigint | not null | plain | |
> cl_date_created | timestamp with time zone | not null | plain | |
> cl_date_modified | timestamp with time zone | | plain | |
> Indexes:
> "cl_pk" PRIMARY KEY, btree (cl_id)
> "cl_cnst_uk01" UNIQUE CONSTRAINT, btree (cit_id, vclf_number, cl_value)
> "cl_indx_fk01" btree (cit_id)
> "cl_indx_fk02" btree (vclf_number)
> Foreign-key constraints:
> "cl_cnst_fk01" FOREIGN KEY (cit_id) REFERENCES citations(cit_id) NOT VALID "cl_cnst_fk02" FOREIGN KEY (vclf_number) REFERENCES valid_cit_locator_fields(vclf_number)

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Tom Lane 2018-06-05 14:42:22 Re: Simple Query Elapsed Time ~ 3 hrs Using Bitmap Index/Heap Scan
Previous Message Sergei Kornilov 2018-06-05 14:26:33 Re: Simple Query Elapsed Time ~ 3 hrs Using Bitmap Index/Heap Scan