From: | Mario Splivalo <mario(dot)splivalo(at)megafon(dot)hr> |
---|---|
To: | Scott Marlowe <scott(dot)marlowe(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-performance(at)postgresql(dot)org |
Subject: | Re: Forcing seq_scan off for large table joined with tiny table yeilds improved performance |
Date: | 2009-04-06 14:37:53 |
Message-ID: | 49DA13C1.2030200@megafon.hr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
Scott Marlowe wrote:
> On Mon, Apr 6, 2009 at 6:20 AM, Mario Splivalo
> <mario(dot)splivalo(at)megafon(dot)hr> wrote:
>> Scott Marlowe wrote:
>>> It's not really solved, it's just a happy coincidence that the current
>>> plan runs well. In order to keep the query planner making good
>>> choices you need to increase stats target for the field in the index
>>> above. The easiest way to do so is to do this:
>>>
>>> alter database mydb set default_statistics_target=100;
>>>
>>> and run analyze again:
>>>
>>> analyze;
>> So, i removed the index on field_name, set default_default_statistics_target
>> to 100, analyzed, and the results are the same:
>
> Why did you remove the index?
>
Because I already have index on that column, index needed to enforce PK
constraint. Here is the original DDL for the table:
CREATE TABLE photo_info_data
(
photo_id integer NOT NULL,
field_name character varying NOT NULL,
field_value character varying,
CONSTRAINT photo_info_data_pk PRIMARY KEY (user_id, field_name)
)
CREATE INDEX photo_info_data_ix_field_value
ON user_info_data USING btree (field_value);
So, there is index on (user_id, field_name). Postgres is using index for
user_id (...WHERE user_id = 12345) but not on field-name (...WHERE
field_name = 'f-spot'). When I add extra index on field name:
CREATE INDEX photo_info_data_ix__field_name
ON user_info_data USING btree (field_name);
Then that index is used.
Mike
From | Date | Subject | |
---|---|---|---|
Next Message | Scott Marlowe | 2009-04-06 14:47:07 | Re: Forcing seq_scan off for large table joined with tiny table yeilds improved performance |
Previous Message | Robert Haas | 2009-04-06 14:36:50 | Re: plpgsql arrays |