Re: Query plan for very large number of joins - Mailing list pgsql-performance

From Sebastian Hennebrueder
Subject Re: Query plan for very large number of joins
Date
Msg-id 429F86FB.9020103@laliluna.de
Whole thread Raw
In response to Re: Query plan for very large number of joins  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-performance

Tom Lane schrieb:

>Richard Huxton <dev@archonet.com> writes:
>
>
>>philb@vodafone.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@postgresql.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.


pgsql-performance by date:

Previous
From: mudfoot@rawbw.com
Date:
Subject: Re: Adaptec/LSI/?? RAID (what about JBOD?)
Next
From: Andrew McMillan
Date:
Subject: Re: Adaptec/LSI/?? RAID (what about JBOD?)