Configuration Guidelines > Performance Guidelines > Multivalue Link Underlying Multivalue Groups >

CheckNoMatch


The property CheckNoMatch may be set to TRUE or FALSE. This property controls the application's behavior when an MVL uses a primary join, but the primary ID field has the value No Match Row Id.

Typically, when a multivalue link has been configured with a primary join, the foreign key used by this join to identify the primary record may not match the primary record. For example, this can happen when the primary record has been deleted from the multivalue group or the multivalue group is new and has no records. In these cases, you can configure the multivalue link to update the primary foreign key to a value of NULL, or to a special value of NoMatchRowId, depending on your requirements. You configure this behavior through the Check No Match property of the Multi Value Link object type; however, there are consequences for the application's performance. The special NoMatchRowId value is designed to prevent secondary queries on foreign key values that are known to have failed, which improves performance the same way using a primary join improves performance.

You activate the NoMatchRowId generating and subsequent testing of behavior by setting Check No Match to FALSE for the MVL. This setting has the following results:

When this property is set to TRUE, check to see that there really are no child records. Do this check by executing a query against the child business component. If, in this case, the Auto Primary property is set to Default, the first record returned is set as the primary. If the Auto Primary property is set to SELECTED, check to determine whether any other multi-value link to this business component has indicated a primary, and set that record as the primary of this multi-value link.

AutoPrimary, CheckNoMatch and Performance

The combined settings of either of the following attributes and values will cause reduced performance in an environment with a high number of parent records without primary child records, as the application is forced to check the existence of child records by executing secondary queries. Both settings of the AutoPrimary property allow the user to set only the primary child records, so the reduced performance could have a long duration.

Attribute
Value
AutoPrimary
Selected
CheckNoMatch
True

Attribute
Value
AutoPrimary
None
CheckNoMatch
True

Consider using the same environment with a high number of parent records without primary child records and the following settings:

Attribute
Value
AutoPrimary
Default
CheckNoMatch
True

This configuration could also cause poor performance when displaying the parent records for the first time. Setting CheckNoMatch forces the application to execute a second query to check the existence of the child records. Because of the AutoPrimary property setting, the application sets the first read child record as the primary. This way, the parent records get a primary child record, and the performance significantly improves the next time these parent records are displayed.

Set Check No Match to FALSE for most multi-value links because of the performance consequences. Set it to TRUE only if the multi-value group could possibly have records added to it without going through the multi-value group itself. For example, account addresses might actually be inserted through the Business Address multi-value group on the Contact business component instead of the Business Address multi-value group on the Account business component. Also, if records can be added to the detail business component through Enterprise Integration Manager, the TRUE setting is the appropriate one.


 Configuration Guidelines 
 Published: 18 April 2003