Re: Query plan for very large number of joins

From: Sebastian Hennebrueder <usenet(at)laliluna(dot)de>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Query plan for very large number of joins
Date: 2005-06-02 22:23:55
Message-ID: 429F86FB.9020103@laliluna.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Tom Lane schrieb:

>Richard Huxton <dev(at)archonet(dot)com> writes:
>
>
>>philb(at)vodafone(dot)ie wrote:
>>
>>
>>>I am using PostgreSQL (7.4) with a schema that was generated
>>>automatically (using hibernate). The schema consists of about 650
>>>relations. One particular query (also generated automatically)
>>>consists of left joining approximately 350 tables.
>>>
>>>
>
>
>
>>May I be the first to offer an "ouch"!
>>
>>
>
>Seconded.
>
>
>
>>However, I'm not sure how much leeway there is in
>>planning a largely left-joined query.
>>
>>
>
>Not much. The best hope for a better result is to order the LEFT JOIN
>clauses in a way that will produce a good plan.
>
>
If this is the best way, you should consider to use an sql query and not
the hibernate ql language in this case. This is possible with Hibernate!
I suppose you could also consider a view in Postgre and let Hibernate
read from this view. This is also possible.

>One thought is that I am not sure I believe the conclusion that planning
>is taking only 36 ms; even realizing that the exclusive use of left
>joins eliminates options for join order, there are still quite a lot of
>plans to consider. You should try both EXPLAIN and EXPLAIN ANALYZE
>from psql and see how long each takes. It'd also be interesting to keep
>an eye on how large the backend process grows while doing this --- maybe
>it's being driven into swap.
>
>Also: I'm not sure there *is* such a thing as a good plan for a 350-way
>join. It may be time to reconsider your data representation. If
>Hibernate really forces this on you, it may be time to reconsider your
>choice of tool.
>
> regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>
>
>
>

--
Kind Regards / Viele Grüße

Sebastian Hennebrueder

-----
http://www.laliluna.de/tutorials.html
Tutorials for Java, Struts, JavaServer Faces, JSP, Hibernate, EJB and more.

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Andrew McMillan 2005-06-02 23:19:28 Re: Adaptec/LSI/?? RAID (what about JBOD?)
Previous Message mudfoot 2005-06-02 21:02:03 Re: Adaptec/LSI/?? RAID (what about JBOD?)