Preventing a Secondary Query on a Foreign Key

Siebel CRM typically configures a multi-value link with a primary join. In this situation, the foreign key that this join uses to identify the primary record might not find the primary. For example, this problem can occur in the following situations:

  • The primary record is deleted from the multi-value group.

  • The multi-value group is new and does not contain any records.

You can define the multi-value link to update the primary foreign key to a value of NULL, or to a special value of NoMatchRowId, depending on your requirements. The purpose of the NoMatchRowId value is to prevent a secondary query on a foreign key value that failed. This configuration improves performance in the same way that a primary join improves performance.

For more information, see Configuring the Auto Primary Property of a Multi-Value Link and How Siebel CRM Creates a Multi-Value Group.

To prevent a secondary query on a foreign key

  1. If most parent records in the multi-value group do not include any child records, then do not set the Check No Match property of the multi-value link to TRUE.

    In this situation, if you set Check No Match to TRUE, then performance is almost as slow as not having a primary join at all, and you might encounter serious negative performance consequences. In most situations, you must not set Check No Match to TRUE.

    For more information, see Configuring the Check No Match Property of a Multi-Value Link.

  2. If a user can add a record to the multi-value group other than through the multi-value group, then consider setting Check No Match to TRUE.

    Consider the following examples:

    • If a user can add a record to the same multi-value group through a multi-value link that is defined on the Contact business component in addition to a multi-value link that is defined on the Account business component

    • If Enterprise Integration Manager adds records to the child business component

  3. If you set CheckNoMatch to TRUE, then set the Use Primary Join property of the multi-value link to TRUE.

    If the CheckNoMatch property is TRUE, and if the Use Primary Join is FALSE, then to find the child records, Siebel CRM always does the secondary query. For more information, see Configuring the Use Primary Join Property of a Multi-Value Link.