Relationships and Performance
Relationships provide a powerful way to pull record data together in meaningful ways. To ensure your relationships meet the needs of your users without impacting performance, follow these best practices.
Limit the Number of Record Loads
You can change load settings on the Advanced page of the Relationship Properties dialog. See Define Advanced Properties for a Relationship.
There are several options for limiting the number of records that load for one-to-many relationships:
- Load only child objects that are referenced by the parent object.
For example, when an incident loads, the related Journal tab references all journal records that exist in a one-to-many relationship between the Incident and Journal Business Objects; by default, all of these journal records are loaded, even if they are not referenced by the incident.
To address this issue, clear the Load immediately check box, and then select the Don't load when constraints are blank check box.
- Load only necessary data for child records.
You can choose to provide data from the primary key for child records rather than a large set of fields. The primary key is usually the RecID column and only this row for each record is returned.
To do so, select the Load keys only option when defining load options for the relationship.
Any performance improvement made by setting the Load keys only option depends on the number of records in that relationship. Good candidates for this setting include Journals and tabs that include Related Incidents and Customer's Other Incidents, if they exist.
For tabs using an expression to show the number of records in a relationship, the records on that tab are loaded regardless of the Load keys only setting. We recommend avoiding this scenario.
- Prevent tabs from loading immediately.
If records are loading slowly, some tabs might be loading a large number of records from the relationship. Address this issue by clearing the Select the tab when it becomes visible check box on the Tab page of the Tab Properties dialog.
Expressions and One-to-Many Relationships
Expressions that use one-to-many relationships may cause performance issues because only the first record in a relationship is evaluated by an expression, even if thousands of records are returned. You should replace expressions that use one-to-many relationships with expressions that use one-to-one relationships.
Note that it is acceptable to use one-to-many relationships for aggregate expressions.