Existing array query performance

Suppose you make the following Service Manager expert search from the Search Interaction Records form.

assignment.groups="Application"

If you enable the sqldebug:1 parameter, you can see that Service Manager converts this query in the following SQL statement:

SELECT NAME, ASSIGNMENT_GROUPS FROM HPOPERATORM1 WHERE ASSIGNMENT_GROUPS='Application';

However, since the ASSIGNMENT_GROUPS column is in a character large object data type, the RDBMS cannot query the field directly. Instead, the RDBMS must forward each row to Service Manager for it to evaluate the contents of the array. Using the out-of-box data, this query returns all 18 sample incident rows.

18 rows forwarded to Service Manager for evaluation
Operator ID Assignment Groups
CMS.Process Application, Hardware, Network
Catherine.Campbell Application, Network, Office Support (North America) SAP Support (North America)
... Application, ...
Rachel.Boudreau Application, E-mail / Webmail (North America), Network, SAP Support (North America)

Because of the inefficiency of this query, the system produces performance alert messages.

Partial File Scan for query involving fields {assignment.groups} (se.search.engine,select.records)

SQL Query incomplete because field (assignment.groups) in file (hpoperator) can not be used in an SQL query (se.search.engine,select.records)

Hit Ratio not achieved on file hpoperator and query (assignment.groups="Application"): Of 101 records checked so far, 94 did not match the query (display,show.rio)

A partial file scan has two adverse performance impacts on your system:

  • The RDBMS uses network traffic to send rows to Service Manager
  • Service Manager must search within the array of each row the RDBMS forwards to it
  • The hit ratio can be low for such queries