| From: | Eric Cholet <cholet(at)logilune(dot)com> | 
|---|---|
| To: | Hiroshi Inoue <Inoue(at)tpf(dot)co(dot)jp>, Martijn van Oosterhout <kleptog(at)svana(dot)org> | 
| Cc: | pgsql-general(at)postgresql(dot)org | 
| Subject: | Re: Determining which index to create | 
| Date: | 2001-11-22 14:12:44 | 
| Message-ID: | 17821570.1006441964@[192.168.1.14] | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
--On jeudi 22 novembre 2001 11:00 +0900 Hiroshi Inoue <Inoue(at)tpf(dot)co(dot)jp> 
wrote:
> Martijn van Oosterhout wrote:
>>
>> On Wed, Nov 21, 2001 at 04:09:52PM +0100, Eric Cholet wrote:
>> > => explain select * from dico_frs where motid=4742 order by date desc
>> > limit 10;
>> > NOTICE:  QUERY PLAN:
>> >
>> > Limit  (cost=46172.25..46172.25 rows=10 width=16)
>> >   ->  Sort  (cost=46172.25..46172.25 rows=11382 width=16)
>> >         ->  Index Scan using dico_frs_motid_date on dico_frs
>> > (cost=0.00..45405.39 rows=11382 width=16)
>>
>> That's wrong. It doesn't seem to realise that a reverse scan on the index
>> would give the right answer. Note that that's only true because you're
>> selecting only a single motid. If there were multiple, a reverse scan
>> would definitly not be appropriate.
>
> Please try
>   select * from dico_frs where motid=4742 order by motid desc,
>   date desc limit 10;
Wow, I am speechless. Sub-second response time, whether the result set
is large or very small. Very impressive. I have resisted pressure to
use Oracle for this application, trusting open source software would do
an equivalent or better job (this table has 140 million records).
Thank you very much.
--
Eric Cholet
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2001-11-22 14:14:56 | Re: [PATCHES] Version checking when loading psql | 
| Previous Message | Robin | 2001-11-22 13:34:56 | PostgreSQL and regular expressions? |