[hibernate-dev] Memory consumption

Guillaume Smet guillaume.smet at gmail.com
Thu May 17 11:58:17 EDT 2012


On Thu, May 17, 2012 at 5:40 PM, Steve Ebersole <steve at hibernate.org> wrote:
> Its an index scan, totally trivial (unless their index hashing algos are
> awful as well).

It is.

Unless you have a lot of LEFT JOINs in the query due to your class
hierarchy (that's our case and the resulting queries aren't trivial at
all), as I mentioned it in my previous post.

On Thu, May 17, 2012 at 5:42 PM, Steve Ebersole
<steven.ebersole at gmail.com> wrote:
> Besides, how is the plan any different for:
>
> ((id = null) OR (id = null) OR (id = null) OR (id = 4) OR (id = 5))

It becomes ugly:
sitra=# explain select id from objettouristique where id=null or
id=null or id=null or id=null or id=5;
                            QUERY PLAN
-------------------------------------------------------------------
 *Seq* *Scan* on objettouristique  (cost=0.00..3220.39 rows=1 width=8)
   Filter: ((id = 5) OR NULL::boolean)
(2 rows)

My point isn't that one method is better than the other (well, the =
null method is definitely worse...). It is that this matter should be
considered carefully as it's not that trivial.

Can't we use a dynamic IN()? Or at least, can't it be an option? I
don't know this area of the code and it looks like a too simple answer
so the question might be stupid... The only problem I see is if it's
using prepared statements.

FWIW, I also have the same problem the OP has. I was thinking that it
was due to our model being bigger than usual but as we use a batch
size of 10, I'm pretty sure we are in the same situation.

-- 
Guillaume


More information about the hibernate-dev mailing list