Do you know what your memos are up to?

2 minute read time.

The other day I was poking around the X3 menus and stumbled across an option I’d never noticed before, the Analyze Memos function.  After looking into it, I realized that this function is likely an under-utilized avenue to explore when digging into performance issues.  When this function is run, it will examine all the saved memos (left list filter criteria saved through Selection > Selection) and based on the criteria entered detect potential performance problems.  A word of warning though, the results of the analysis are only indications of potential performance issues, and in some cases could reveal “problems” that don’t exist.  Nevertheless, if you are running into performance issues, this may be a valuable tool to review.  Let’s take a quick look at how it works.

First go to Development, Utilities, Verifications, Analyze memos (ANAMEMO):

Next, we can set our test parameters

For reference, here are the definitions for each parameter pulled from the field help:

Critical size: This size (in number of lines in the table) defines the threshold above which an index problem in the memo is considered as critical from the point of view of performance.

Size performance: This size (in number of lines in the table) defines the threshold above which an index problem in the memo is considered as serious from the point of view of performance.

Size warning: This size (in number of lines in the table) defines the threshold below which an index problem in the memo is not considered as posing a problem from the point of view of performance.  From this threshold, a warning message will be displayed (if the other thresholds are not exceeded).

From our example above (using the pre-filled defaults for the parameters), let’s click OK to allow the function to run and provide us with a log to review:

Once the analysis completes, we are provided a log that will look like this:

As you can see, this provides us with a few potential issues, but further informed analysis is required to decide whether or not the memos that have been flagged need to be addressed (either by deleting the corresponding memo and warning the user who created it, or by adding an optimization index).  The structure of the memo details is name (NAME), whether it is a local or global memo, the user who created the memo (UUUUU) and the table in which the memo is located (XXXXX), and the problematic memos are numbered (NNN).  For example, in the screenshot below, line 18 is referencing a global memo called CSL that was created by the ADMIN user and is located on the GACCOUNT table.

The meanings of each of the potential warnings that this function might return can be found in the online help.  Line 19 warns us that the memo contains one or more conditions separated by ‘or’, and this type of request is generally heavy in terms of performance.  Line 20 warns that no index exists for the specified fields.  If the memo is used frequently, it could be worth exploring an optimization index to increase performance.

I hope that learning about the existence of this function helps you somewhere down the line when trying to optimize the performance of your system.  Until next time!