please help with the explain analyze plan

From: Rajesh Kumar Mallah <mallah(dot)rajesh(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: please help with the explain analyze plan
Date: 2009-02-11 10:58:00
Message-ID: a97c77030902110258m240ef270vfe69f4e4df5accc8@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Dear friends,

I have explain analyze of two queries

explain analyze SELECT count(*) from general.rfis where 1=1 and
inquiry_type = 'BUY' and receiver_uid=1320721;
(7 ms)
http://pastebin.com/m5297e03c

explain analyze SELECT count(*) from general.rfis where 1=1 and
inquiry_type = 'BUY' and receiver_uid=1320721 generated_date >=
2251 and ;
(80 secs)
http://pastebin.com/d1e4bdea7

The table general.rfis is partitioned on generated_date and the
condition generated_date >= 2251
was added with the intention to limit the number of (date based)
partitions that would be searched
by the query using the constraint exclusion facility. however as
evident the query has become very
slow as a result of this condition (even on primed caches).

can anyone kindly explain why the result was so counter intuitive ?

In particular where is most of the (80828.438 ms) spent on the plan
http://pastebin.com/d1e4bdea7 (reference to actual line number is appreciated)

structure of a typical partition (abridged)

Table "rfi_partitions.rfis_part_2009_01"
Column | Type |
Modifiers
-----------------------+------------------------+---------------------------------------------------------------
rfi_id | integer | not null default
nextval('general.rfis_rfi_id_seq'::regclass)
sender_uid | integer | not null
receiver_uid | integer | not null
subject | character varying(100) | not null
message | text | not null
inquiry_type | character varying(50) | default
'BUY'::character varying
inquiry_source | character varying(30) | not null
generated_date | integer | not null default
general.current_date_id()
Indexes:
"rfis_part_2009_01_pkey" PRIMARY KEY, btree (rfi_id)
"rfis_part_2009_01_generated_date" btree (generated_date)
"rfis_part_2009_01_receiver_uid" btree (receiver_uid) CLUSTER
"rfis_part_2009_01_sender_uid" btree (sender_uid)
Check constraints:
"rfis_part_2009_01_generated_date_check" CHECK (generated_date >=
3289 AND generated_date <= 3319)
"rfis_part_2009_01_rfi_id_check" CHECK (rfi_id >= 12344252 AND
rfi_id <= 12681399)
Inherits: rfis

regds
rajesh kumar mallah.

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Glyn Astill 2009-02-11 11:55:54 Re: please help with the explain analyze plan
Previous Message Tom Lane 2009-02-11 00:37:16 Re: View performance degraded between 8.1 and 8.3