When ARS performs data interaction with a Join form, it simply issues the appropriate SQL against the SQL View it created to represent the Join (named T<schema id of the join>). In situations like yours, that SQL View itself references other SQL Views representing the lower level joins, and so on. So, what's really happening is that the DB optimizer must string all this stuff together and compile the result before execution. Fortunately, this process is O(N), where N is the total number of joins, so itself is not very bad at all.
The resulting SQL is similar to what you might create yourself if you had to write the SQL to join all those forms (tables) together, though perhaps not as well optimized as it could be. Obviously, the more tables involved in a query, the more complex it is and the longer it takes the database to compute. However, if this level of complexity is what is needed to get the result you need, then it's what you need. So, the point of all this is that all the complexity of pulling data from such a Join is completely managed by the database itself, and not by ARS (if you're pushing data into this thing...ugh...that's a different story). I'm not sure why BMC mentions that practical limit, though I would suspect it has to do with the amount of work YOU have to do to maintain all those Joins (more on this below). I agree with Shawn, though: if you're concerned it's well worth your time to understand the execution path being used by your queries to this thing, and whether or not your indexes are being used correctly. I've long since moved away from using ARS Join forms, and instead exclusively use (and recommend) manually created SQL View on top of which I create ARS View forms. One immediate advantage for this particular example is that instead of dealing with 9 ARS Join forms (for your 10 base forms), you only need to deal with one View type form. Another advantage is that you can structure the SQL to make maximum use of available indexes (in Oracle, for example, you absolutely CAN include HINTs in the SQL definition of the view to direct the optimizer to appropriately leverage the available indexes). A third advantage is the reduced maintenance. For example, let me assume that in your example you first joined Form1 to Form 2, then joined that to Form 3, and so on. Now, with the ARS Join based solution, if you want to add a field from Form 1 you have to separately modify each of the 9 Joins (this may be why BMC suggests that practical limit of 6). With the SQL View-Remedy View solution, you first modify the SQL view (to include the column), then modify the ARS View form to add the field on top of the column. A fourth advantage is the ability to insert computed columns. For example, ARS Table fields of course only allow you to select one Selection type field on which to base row coloring. However, it may be the case that the coloring scheme you wish to apply is more complex, and is based on factors from some combination of fields (or even from foreign fields). If so, your only pure ARS based solution is to create a real (i.e. Optional or Required) Selection field, and maintain its value through workflow. This can get VERY complicated. In the SQL View/ARS View, the solution is very simple: just create a CASE statement in the SQL View and in the ARS View, create a Selection field on top of it. In this paradigm, the ColorStatus (which is what I always call the column & field) can be arbitrarily complex, yet simple to implement and maintain. Of course, one trade off is that this type of solution is a bit more obscure than the Join based solution (because the SQL View is not visible from within Dev Studio). It also of course requires SQL knowledge, though personally I feel this is an essential skill in Remedy application development. And finally, it requires some understanding of of the ARS data dictionary (at least enough to know how to identify and interact with the SQL Views ARS creates for such use (NOT the T/B/SH tables and views, but the views it creates using your form and field names). But I've been doing this now for many years and find this solution far more manageable. Anyway, my 2 cents. Hope something in here helps. -charlie On Fri, Jan 3, 2014 at 11:30 AM, Pierson, Shawn < shawn.pier...@energytransfer.com> wrote: > ** > > I’d work with the DBAs to run sql profiler or something while running > queries against that table so they could make the argument for you with > actual statistics rather than hypotheticals. > > > > Thanks, > > > > *Shawn Pierson * > > Remedy Developer | Energy Transfer > > > > *From:* Action Request System discussion list(ARSList) [mailto: > arslist@ARSLIST.ORG] *On Behalf Of *Rick Cook > *Sent:* Friday, January 03, 2014 11:58 AM > *To:* arslist@ARSLIST.ORG > *Subject:* Multiple level join forms > > > > ** > > We have a custom application that has a TEN layers deep join form. > Something like > Company:XXXX:YYY:Form1-Form2-Form3-Form4-Form5-Form6-Form7-Form8-Form9-Form10_join. > > BMC documentation (for 7.5) says that six is the practical limit for join > levels. > > There are a large number of rows in this form, and the form is about > average size (80~ columns). I didn't build it, but I'm trying to get the > people who did to understand why this is a bad idea, beyond "It's a > performance impacting design". > > Can someone share their experiences with what happens beyond the > BMC-specified "event horizon"? I'm guessing that the searches increase > exponentially (or at least logarithmically) in time as the complexity > increases. The two base forms are pretty well-indexed - about six each, I > think. > > Rick Cook > > _ARSlist: "Where the Answers Are" and have been for 20 years_ > Private and confidential as detailed > here<http://www.energytransfer.com/mail_disclaimer.aspx>. > If you cannot access hyperlink, please e-mail sender. > _ARSlist: "Where the Answers Are" and have been for 20 years_ _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org "Where the Answers Are, and have been for 20 years"