Thread: Re: partitioned table and ORDER BY indexed_field DESC LIMIT 1

Re: partitioned table and ORDER BY indexed_field DESC LIMIT 1

From
"Luke Lonergan"
Date:
On 11/7/07 10:21 PM, "Gregory Stark" <stark@enterprisedb.com> wrote:

>> part=# explain SELECT * FROM n_traf ORDER BY date_time LIMIT 1;
>>                                                                   QUERY PLAN
>> -----------------------------------------------------------------------------
>> --------------------------------------------------------------------
>> Limit  (cost=198367.14..198367.15 rows=1 width=20)
>>   ->  Sort  (cost=198367.14..200870.92 rows=1001510 width=20)
>>         Sort Key: public.n_traf.date_time
>>         ->  Result  (cost=0.00..57464.92 rows=1001510 width=20)
>>               ->  Append  (cost=0.00..57464.92 rows=1001510 width=20)
>>                     ->  Index Scan using n_traf_date_time_login_id on n_traf
>> (cost=0.00..66.90 rows=1510 width=20)
>
> That looks suspicious. There's likely no good reason to be using the index
> scan unless it avoids the sort node above the Append node. That's what I hope
> to do by having the Append executor code do what's necessary to maintain the
> order.

Yah - the way it works in GPDB is that you get a non-sorting plan with an
index scan below the parent - that was the point of the fix. Hmm.

- Luke



Re: partitioned table and ORDER BY indexed_field DESC LIMIT 1

From
Mark Kirkwood
Date:
Luke Lonergan wrote:
> On 11/7/07 10:21 PM, "Gregory Stark" <stark@enterprisedb.com> wrote:
>
>
>>> part=# explain SELECT * FROM n_traf ORDER BY date_time LIMIT 1;
>>>                                                                   QUERY PLAN
>>> -----------------------------------------------------------------------------
>>> --------------------------------------------------------------------
>>> Limit  (cost=198367.14..198367.15 rows=1 width=20)
>>>   ->  Sort  (cost=198367.14..200870.92 rows=1001510 width=20)
>>>         Sort Key: public.n_traf.date_time
>>>         ->  Result  (cost=0.00..57464.92 rows=1001510 width=20)
>>>               ->  Append  (cost=0.00..57464.92 rows=1001510 width=20)
>>>                     ->  Index Scan using n_traf_date_time_login_id on n_traf
>>> (cost=0.00..66.90 rows=1510 width=20)
>>>
>> That looks suspicious. There's likely no good reason to be using the index
>> scan unless it avoids the sort node above the Append node. That's what I hope
>> to do by having the Append executor code do what's necessary to maintain the
>> order.
>>
>
> Yah - the way it works in GPDB is that you get a non-sorting plan with an
> index scan below the parent - that was the point of the fix. Hmm.
>
>

Unfortunately our plan in GPDB looks exactly the same in this case - so
we have a bit of work to do as well! Initially I wondered if I have got
something wrong in the patch... and checked on GPDB - only to see the
same behaviour! (see prev comment about LIMIT).

Cheers

Mark