Configuring Siebel Business Applications > Improving the Performance of Siebel Business Applications > Improving the Performance of a Siebel Application >

Improving Performance by 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 technique improves performance in the same way that a primary join improves performance.

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

To improve performance by preventing 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 About 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 performs the secondary query. For more information, see About the Use Primary Join Property of a Multi-Value Link.

About the Check No Match Property of a Multi-Value Link

If you set the Check No Match property of the multi-value link to TRUE, then Siebel CRM does the following work:

  • If Siebel CRM encounters a parent record where the value of the primary foreign key is NoMatchRowId, then Siebel CRM does not perform a secondary query because a value of NoMatchRowId indicates that there are no child records in the multi-value group.
  • If Siebel CRM encounters a parent record where the primary foreign key is empty, NULL, or invalid, then Siebel CRM performs a secondary query to determine if there are child records in the multi-value group:
    • If Siebel CRM finds there are no child records, then it sets the Primary ID Field to NoMatchRowId. For more information, see About the Primary ID Field.
    • If the Auto Primary property of the multi-value link is DEFAULT, and if the secondary query locates a matching detail record, then Siebel CRM updates the foreign key with the row ID of the record that the query located.
    • If the Auto Primary property of the multi-value link is NONE, and if the secondary query does not locate a matching detail record, then Siebel CRM leaves the current value intact.
Configuring Siebel Business Applications Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Legal Notices.