Re: strange query plan with LIMIT - Mailing list pgsql-performance

From tv@fuzzy.cz
Subject Re: strange query plan with LIMIT
Date
Msg-id 22bab989ef6b6b073db4cecca0a19dd7.squirrel@sq.gransy.com
Whole thread Raw
In response to Re: strange query plan with LIMIT  (anthony.shipman@symstream.com)
List pgsql-performance
> What seems odd to me is that the only difference between the two is the
> limit
> clause:
>
> select * from tdiag where (create_time >= '2011-06-03
> 09:49:04.000000+0' and create_time < '2011-06-06 09:59:04.000000+0') order
> by
> diag_id limit 1;
>
> select * from tdiag where (create_time >= '2011-06-03
> 09:49:04.000000+0' and create_time < '2011-06-06 09:59:04.000000+0') order
> by
> diag_id;
>
> and yet the plan completely changes.

As Claudio Freire already pointed out, this is expected behavior. With
LIMIT the planner prefers plans with low starting cost, as it expects to
end soon and building index bitmap / hash table would be a waste. So
actually it would be very odd if the plan did not change in this case ...

Anyway I have no idea how to fix this "clean" - without messing with
enable_* or cost variables or other such dirty tricks.

regards
Tomas


pgsql-performance by date:

Previous
From: Claudio Freire
Date:
Subject: Re: strange query plan with LIMIT
Next
From: anthony.shipman@symstream.com
Date:
Subject: Re: strange query plan with LIMIT