Search Elements to Use

The following list includes search elements known to minimize impact on system performance. This list can be used to troubleshoot existing searches, and can also be reviewed prior to creating new searches to prevent performance problems.

For general information on searches, refer to the Advanced Search topic in the Getting Started documentation here.

Basic Searches

When possible, use the following syntax to achieve the best search performance. Searching for a value without specifying the attribute, ID, or name searches for the value in all attribute values, IDs, and names.

Attributes

Search using 'Attribute-ID = value' to search in values of this one specified attribute only. For example, search for the 'Samsung' value only in the Manufacturer attribute, rather than in all attributes.

Objects by ID

Search using 'ID = value' to search for objects by looking in the ID parameter only. For example, search for the 'I-SalesItemFamily-1311' value only in the ID field.

Objects by Name

Search using 'Name = value' to search for objects by looking in the Name parameter only. For example, search for the 'AC-P7000-42' value only in the Name field.

Use Specific Search Criteria

When searching a database with many objects, use as specific a search criteria as possible. For example, specifying the object type to search for in a specific hierarchy (as shown below) is faster than searching for all object types in all hierarchies.

Use Object Super Types

The search function performs slightly better when specifying the object super type (such as product, entity, asset, classification, and so on) instead of using the specific object type below the main object types. For more information, refer to the Object Super Types topic in the Getting Started documentation here.

In the example shown below, the product super object type is used, instead of SalesItem (which is an object type below the product super type).

Searches with Wildcards

Specify as many characters as possible before using a wildcard (*) to optimize search performance results.

Important: Specifying a wildcard as first character prevents the use of the database indexing query, which means the search must traverse all objects in the database. This is a dramatic performance impact.

For example, use a wildcard (*) after more than three characters, as shown below.

Optimize Search Below with a Configuration Property

In some cases, a bad execution plan is implemented by Oracle when using the 'Search Below' criteria. The following case-sensitive entry in the sharedconfig.properties file will improve the search performance:

Domain.BelowCriteria.UseRecursiveWith=true

Setting this property to 'true' forces Oracle to choose another (and in some cases better) exclusion plan, and may have a positive effect on search performance.

Optimize Combined Search Below and Value Search

Combining the 'Search Below' criteria with a value search criteria may not perform well. However, this type of search can be optimized by first doing a value exclusion search, and then combining the result with the 'Search Below' criteria. For example, review the image below:

In-Memory

Consider In-Memory to improve import performance, as defined in the In-Memory Database Component for STEP topic in the Resource Materials section of online help here.