Re: Plan for relatively simple query seems to be very inefficient

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Arjen van der Meijden <acmmailing(at)vulcanus(dot)its(dot)tudelft(dot)nl>
Cc: performance pgsql <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Plan for relatively simple query seems to be very inefficient
Date: 2005-04-06 17:42:14
Message-ID: 28552.1112809334@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-performance

Arjen van der Meijden <acmmailing(at)vulcanus(dot)its(dot)tudelft(dot)nl> writes:
> I noticed on a forum a query taking a surprisingly large amount of time
> in MySQL. Of course I wanted to prove PostgreSQL 8.0.1 could do it much
> better. To my surprise PostgreSQL was ten times worse on the same
> machine! And I don't understand why.

Wrong index ... what you probably could use here is an index on
data_main.range, so that the query could run with postcodes as the
outer side. I get such a plan by default with empty tables:

Aggregate (cost=99177.80..99177.80 rows=1 width=0)
-> Nested Loop (cost=0.00..98021.80 rows=462400 width=0)
-> Seq Scan on postcodes p (cost=0.00..30.40 rows=2040 width=4)
-> Index Scan using rangei on data_main dm (cost=0.00..44.63 rows=227 width=2)
Index Cond: ((dm.range >= "outer".range_from) AND (dm.range <= "outer".range_till))

but I'm not sure if the planner would prefer it with the tables loaded
up. (It might not be the right thing anyway ... but seems worth
trying.)

Given the relatively small size of the postcodes table, and the fact
that each data_main row seems to join to about one postcodes row,
it's possible that what the planner did for you was actually the
optimal thing anyhow. I'm not sure that any range-capable index would
be faster than just scanning through 160 entries in memory ...

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Arjen van der Meijden 2005-04-06 18:00:09 Re: Plan for relatively simple query seems to be very inefficient
Previous Message Arjen van der Meijden 2005-04-06 17:40:29 Re: Plan for relatively simple query seems to be very inefficient

Browse pgsql-performance by date

  From Date Subject
Next Message Steinar H. Gunderson 2005-04-06 17:42:54 Re: Réf
Previous Message Arjen van der Meijden 2005-04-06 17:40:29 Re: Plan for relatively simple query seems to be very inefficient