On Sun, 16 Mar 2008, Tom Lane wrote:

> > I have a weird query execution plan problem I am trying to debug on 
> > Postgresql 8.2.6. I have a query that joins against a temporary table that 
> > has very few rows.
> 
> Is it possible that the temp table ever has exactly zero rows?

Ah, that is indeed a possibility. If I am to understand correctly, there is 
no way to represent the difference between an un-analyzed table and a 
zero-sized analyzed table as far as the query planner is concerned? Looks 
like I'll have to do a "select count(*)" before running query to avoid 
entering this trap. (That feels a bit suboptimal since the conary repository 
code does extensive work with/through temporary tables, and this could very 
well end up not being the only section affected...)

> That's entirely the wrong way to think about it.  The planner is
> choosing a good plan based on its estimates of table sizes, which
> are wildly different in the two cases:
> 
> >             ->  Seq Scan on tmpinstanceid  (cost=0.00..1.02 rows=2 width=8) 
> > (actual time=0.005..0.007 rows=2 loops=1)
> 
> >     ->  Seq Scan on tmpinstanceid  (cost=0.00..29.40 rows=1940 width=8)

In this particular case it would be nice if there would be a differentiation 
between "estimate size 0" and "estimate size unknown".

> The only idea I have for how the planner could "ignore" a previous
> analyze result is if the analyze found the table to be of zero size.
> Then the heuristic would still be applied because relpages == 0.

For now I will try to run with the assumption that the massive sequential 
scans are caused by joing an empty table in the query and try to work my way 
around it - unless there is some trick to tell the planner that this is a 
query that would be much better optimized away instead of causing a massive 
IO storm.

Thanks,

Cristian
-- 
Cristian Gafton
rPath, Inc.


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to