This documentation supports the 9.0 version of Remedy Action Request System.

To view the latest version, select the version from the Product version menu.

Creating efficient qualifications

When the BMC Remedy AR System server checks the Run If qualification of an active link or filter, it checks only the current request. However, when the server checks the qualifications for escalations, Set Fields actions, Push Fields actions, certain Open Window actions, table fields, alert lists, search menus, and defined searches, it must evaluate the qualifications against all requests in the database for the selected forms.

You can improve system performance dramatically if you follow these recommendations:

  • Use indexed fields. Tests of indexed fields use the index to access the requests instead of scanning all requests. For information about indexing, see:
  • Avoid the following searches, which cause a full scan of a database table:
    • The != Operator
      Searches using the != operator check every record to see if the value is not contained. If you have created indexes on a field, they are not used. Instead, design your qualifications to retrieve what you are looking for, instead of what you are not looking for. For example, you can rewrite the search qualification 'Status' != "Closed" to 'Status' < "Closed" to improve the use of an index.
      The != operator does not match entries in which the value for the field is NULL. You must explicitly include a test for NULL to find NULL values. For example, 'Status' != "Closed"does not search for cases where the Status field is empty. You must use the following syntax:

      'Status' != "Closed" OR 'Status' = $NULL$

      Note

      Avoid creating comparisons with fields of unlimited length, because the database might not support that capability.

    • Wildcards in front of search terms
      Searches that begin with a wildcard (for example, 'Submitter' LIKE "%Jackson%" ) does not use the index but scans the database for every record containing the word Jackson that have any characters preceding the J.
      Searches with trailing wildcards are valid and use indexes. For example, 'Submitter' LIKE "Jackson%" uses the index and finds all entries starting with Jackson.
    • Poorly written arithmetic operations
      Searches that use the field in an arithmetic operation can cause a table scan. For example, a qualification to find all requests greater than 24 hours ($TIMESTAMP$ - 'Create Date' > 60*60*24 ) searches the entire database for records with $TIMESTAMP$ (the current date and time). Instead, rewrite the search qualification to place the indexed field on the left side of the equation, as in the following qualification: 'Create Date' < $TIMESTAMP$ -60*60*24.
  • Avoid unqualified Run If statements for escalations. An unqualified Run If statement for an escalation performs an unqualified query to the database table and execute the If actions for every request found in the form. Server performance is especially degraded for unqualified Run If statements in escalations that are set to run at frequent intervals, because the server must search the database every time the escalation is run.

Note

If the database is case-sensitive, any queries run by active link workflow are case-sensitive. For an Oracle database, you can set the Db-Case-Insensitive option in the AR System Administration: AR System Configuration Generic UI form to support case-insensitive searches. However, this option can have a negative impact on performance. See Configuration settings C-D.

For more information about optimizing BMC Remedy AR System searches, see Avoiding unqualified searches.

Was this page helpful? Yes No Submitting... Thank you

Comments