"l...@laurent-hasson.com" <l...@laurent-hasson.com> writes:
> I have a query with many joins, something like:

> Select c1, c2, c3, sum(c5)
>   From V1
>        Join V2 on ...
>        Left join V3 on ...
>        Left join T4 on ...
>        Join T5 on ...
>        Join T6 on ...
>        Left join T7 on ...
>        Join T8 on ...
>        Left join T9 on ...
> Where ...
> Group by c1, c2, c3

> The join clauses are fairly innocuous and work directly on foreign key 
> relationships, so there is no voodoo there. Same for the where clause. The 
> views are similar and also join 3-4 tables each. All in all, there are 3 of 
> all the tables involved that have millions of rows and all the other tables 
> have thousands of rows. In particular, T9 is totally empty.

> If I remove T9 from the query, it takes 9s to run. If I keep T9, the query 
> takes over 30mn to run! If I switch the order of T8/T9, then the same happens 
> with T8. So I don't think this has to do with the tables themselves. I have 
> updated all the statistics and reindexed all involved tables.

You need to raise join_collapse_limit to keep the planner from operating
with its stupid cap on.  Usually people also increase from_collapse_limit
if they have to touch either, but I think for this specific query syntax
only the former matters.

                        regards, tom lane


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

Reply via email to