From: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
---|---|
To: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: statistics horribly broken for row-wise comparison |
Date: | 2009-03-02 22:02:33 |
Message-ID: | b42b73150903021402l4d1dd11cu271bf3aa0d8faf90@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Mar 2, 2009 at 4:43 PM, Merlin Moncure <mmoncure(at)gmail(dot)com> wrote:
> It looks like for row-wise comparison, only the first column is used
> for generating the expected row count. This can lead to bad plans in
> some cases.
>
> Test case (takes seconds to minutes hardware depending):
>
> create table range as select v as id, v % 500 as key, now() +
> ((random() * 1000) || 'days')::interval as ts from
> generate_series(1,10000000) v;
>
> create index range_idx on range(key, ts);
>
> explain analyze select * from range where (key, ts) >= (222, '7/11/2009') and
> (key, ts) <= (222, '7/12/2009')
> order by key, ts;
>
> result (cut down a bit)
> Sort (cost=469723.46..475876.12 rows=2461061 width=16) (actual
> time=0.054..0.056 rows=13 loops=1)
> Sort Key: key, ts
> Sort Method: quicksort Memory: 25kB
>
> note the row count expected vs. got. Varying the ts parameters
> changes the expected rows, but varying the key does not. Note for the
oop, thats backwards. rows expected depends on key (the first column
in the index) only.
merlin
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Grittner | 2009-03-02 23:09:00 | Re: add_path optimization |
Previous Message | Merlin Moncure | 2009-03-02 21:43:55 | statistics horribly broken for row-wise comparison |