Re: partitioned table and ORDER BY indexed_field DESC LIMIT 1

From: "Heikki Linnakangas" <heikki(at)enterprisedb(dot)com>
To: "Anton" <anton200(at)gmail(dot)com>
Cc: <pgsql-performance(at)postgresql(dot)org>
Subject: Re: partitioned table and ORDER BY indexed_field DESC LIMIT 1
Date: 2007-08-24 10:38:26
Message-ID: 46CEB522.9030907@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-performance

Anton wrote:
>>> =# explain SELECT * FROM n_traf ORDER BY date_time DESC LIMIT 1;
>>> QUERY PLAN
>> ---------------------------------------------------------------------------------------------------------
>>> Limit (cost=824637.69..824637.69 rows=1 width=32)
>>> -> Sort (cost=824637.69..838746.44 rows=5643499 width=32)
>>> Sort Key: public.n_traf.date_time
>>> -> Result (cost=0.00..100877.99 rows=5643499 width=32)
>>> -> Append (cost= 0.00..100877.99 rows=5643499 width=32)
>>> -> Seq Scan on n_traf (cost=0.00..22.30
>>> rows=1230 width=32)
>>> -> Seq Scan on n_traf_y2007m01 n_traf
>>> (cost=0.00..22.30 rows=1230 width=32)
> ...
>>> -> Seq Scan on n_traf_y2007m12 n_traf
>>> (cost=0.00..22.30 rows=1230 width=32)
>>> (18 rows)
>>>
>>> Why it no uses indexes at all?
>>> -------------------------------------------
>> I'm no expert but I'd guess that the the planner doesn't know which
>> partition holds the latest time so it has to read them all.
>
> Agree. But why it not uses indexes when it reading them?

The planner isn't smart enough to push the "ORDER BY ... LIMIT ..."
below the append node. Therefore it needs to fetch all rows from all the
tables, and the fastest way to do that is a seq scan.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Magnus Hagander 2007-08-24 11:38:24 Buildfarm failures MSVC
Previous Message Anton 2007-08-24 10:32:43 Re: partitioned table and ORDER BY indexed_field DESC LIMIT 1

Browse pgsql-performance by date

  From Date Subject
Next Message Steven Flatt 2007-08-24 14:22:38 Re: When/if to Reindex
Previous Message Anton 2007-08-24 10:32:43 Re: partitioned table and ORDER BY indexed_field DESC LIMIT 1