Jon,

My point was that SQL optimizations are much easier to implement (I use Oracle 
too) without an inheritance hierarchy, since EOF is less involved in building 
queries to handle the structure.  I actually have a situation today where I 
regret using 2 levels of inheritance because I cannot tune the queries as 
needed, causing a significant degradation of performance.  This is especially 
true with 2 level hierarchies and batch faulting.  EOF is just unable to 
resolve the super-entities correctly.  When I tested changing it to a one level 
hierarchy, performance increased a thousand fold.

In any case, best of luck!

Ken

On Mar 22, 2011, at 11:04 PM, Jon Nolan wrote:

> Hi Ken,
> 
> The inheritance is absolutely necessary and works a treat.  My example EO 
> tree is just that, an example for the sake of simplicity.  The real model 
> supports social network content types and is fairly esoteric (the example is 
> easy to understand and is a valid representation).  While quite complicated 
> our model supports our needs almost perfectly.  The differences in behavior 
> between types can be substantial.
> 
> The behavior of the objects and the structure of the model isn't the problem. 
>  The problem is very much localized to data retrieval speed and is more an 
> Oracle issue than a Web Objects one.  I'm trying to optimize it in various 
> ways - some on the WO side and others on the DB side.  I'm not considering 
> throwing away the substantial benefits of our model design.
> 
> The specific behavior I'm looking for is influencing Oracle's optimizer to 
> NOT do full table scans when retrieving these objects.  Getting rid of big OR 
> qualifiers, controlling the order of restricting v. non-restricting 
> qualifiers, utilizing hints, using views, etc.  All in play.
> 
> Thanks,
> Jon
> 
> 
> 
> On 3/22/11 8:18 PM, Ken Anderson wrote:
>> Not to put a crimp in your model, but is inheritance really necessary here?  
>> What actual behavior is different?
>> 
>> One level inheritance is hard to optimize - two levels, doubly so (at 
>> least!).  If you could share more about what kind of behavior you're looking 
>> for from these objects it might be helpful to everyone on the list.
>> 
>> Ken
>> 
>> On Mar 22, 2011, at 7:31 PM, Jon Nolan wrote:
>> 
>>> I have a fairly involved EO inheritance tree that works beautifully in 
>>> every way but one.  Here's a quick example illustrating the structure I'm 
>>> using:
>>> 
>>> Human
>>>    North American
>>>        American
>>>        Canadian
>>>        Mexican
>>>    European
>>>        German
>>>        Italian
>>>        Spaniard
>>>    Asian
>>>        Korean
>>>        Laotian
>>> 
>>> etc.  You get the idea.
>>> 
>>> So if I utilize European.fetchEuropeans(...) a qualifier is generated along 
>>> the lines of HUMAN_TYPE = German or HUMAN_TYPE = Italian or HUMAN_TYPE = 
>>> Spaniard.  This would be fine except for the Oracle optimizer deciding not 
>>> to use the HUMAN_TYPE_IDX index.  I've tried using hints but (a) it's 
>>> difficult to get right for a query generated by a ERXBatchingDisplayGroup 
>>> and (b) the JDBC adaptor disconnects me when I try.
>>> 
>>> There is another qualifier clause which happens to make it so that, in the 
>>> European example, all the returned humans will indeed be German, Italian or 
>>> Spaniard.  Is there any way to simply discard the OR'd HUMAN_TYPE 
>>> qualifier?  Any other suggestions?  Do I have something wrong in my model 
>>> in the first place?
>>> 
>>> Thanks,
>>> Jon
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/kenlists%40anderhome.com
>>> 
>>> This email sent to kenli...@anderhome.com
>> 
>> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to