ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/qqqvexpl.htm

2582 lines
69 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>Visual Explain (QQQVEXPL) API</title>
<!-- Begin Header Records -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- File created by Tom Schreiber for V5R1 -->
<!-- at RCHVMW2 on 17 Feb 1999 at 11:05:09 -->
<!--File Edited March 2001 -->
<!-- This file has undergone html cleanup on 1/8/02 by JET -->
<!--End Header Records -->
<!-- Begin Header Records ========================================== -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<a name="Top_Of_Page"></a>
<!-- Java sync-link -->
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
</script>
<h2>Visual Explain (QQQVEXPL) API</h2>
<div class="box" style="width: 80%;">
<br>
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="50%">Pointer to qualified query name</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="20%">CHAR(*)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Pointer to qualified database monitor table</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">CHAR(*)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Pointer to the set of records returned</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">PTR(SPP)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Pointer to the return code structure</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">CHAR(*) <!-- </td></tr><tr>
<td align="center" valign="top">5
</td><td align="left" valign="top">Error code
</td><td align="left" valign="top">I/O
</td><td align="left" valign="top">Char(*) --></td>
</tr>
</table>
<!-- <p></p>
&nbsp;Service Program Name: Name (Delete line if not applicable.)
<p></p>
&nbsp;Default Public Authority: *USE or *EXCLUDE--><br>
&nbsp;&nbsp;Threadsafe: Conditional; see <a href="#usage_notes">Usage
Notes</a>.<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Visual Explain (QQQVEXPL) API is used to create a query graph that
graphically displays the execution of an SQL statement. You can use this tool
to see information about both static and dynamic SQL statements. QQQVEXPL
supports the following types of SQL statements:</p>
<ul>
<li>Select</li>
<li>Insert</li>
<li>Update</li>
<li>Delete</li>
</ul>
<p>You can use this tool to better understand where the highest costs of your
queries are taking place. You can improve query performance by:</p>
<ul>
<li>Rewriting your SQL statement.</li>
<li>Changing query attributes and environment settings.</li>
<li>Creating any recommended indexes.</li>
</ul>
<p>You also can use the QQQVEXPL API to:</p>
<ul>
<li>View the statistics that were used at the time of optimization.</li>
<li>Determine whether an index was used to access a table. If an index was not
used, Visual Explain can help you determine which columns might benefit from
being indexed.</li>
<li>View the effects of performing various tuning techniques by comparing the
before and after versions of the query graph.</li>
<li>Obtain information about each operation in the query graph, including the
total estimated cost and number of rows retrieved.</li>
</ul>
<p>Input to the Visual Explain (QQQVEXPL) API is two structures. One contains
the information the Visual Explain consolidator needs to uniquely identify
which query within the database monitor table is to be explained. The other
contains the name of the database monitor table. The database monitor table is
a table that contains the records resulting from an execution of the STRDBMON
command. Output from the Visual Explain (QQQVEXPL) API is a pointer to a stream
of data located in user domain storage. This data contains the information
necessary to create a pictorial view of how the specified query was
implemented. It is up to the user to clean up the user domain storage. Also,
output is a structure that contains an error return code, the number of entries
in the output data, and the entry number of the Final Select ICON. To create
the picture, the user starts with the entry of the Final Select ICON and works
back to the beginning ICONs.</p>
<p>The format for the output records (or array entries) can be found in <a
href="#output_format">Output Format</a>. Each record has a unique I CON number
associated with it. The unique ICON number associates the records to a
particular ICON. That is, all records with the same unique ICON number are
associated with one specific ICON. For example, if the Final Select ICON has a
unique ICON number of 12, then all records with a unique ICON number of 12
contain information about the Final Select ICON. The record immediately
following the Final Select record is the record that tells the user how many
ICONs (called child ICONs) are branched off the Final Select ICON. This record
will have a record type of 11, which means it contains the number of child
ICONs. The unique ICON number will match the unique ICON number of the Final
Select ICON. Therefore, we know this record is telling us how many child ICONs
there are for the Final Select ICON. The next records will contain the ICON
number of the child ICONs. There will be one record for each child ICON and
they will have a record type of 12 (unique ICON number of the child ICON). The
user can find the record that corresponds to the child ICON by searching for
the record that has a record type of 10 (new ICON) and a unique ICON number
that matches the ICON number of the child ICON. Once the record of the child
ICON is found, the process starts over again. All the records associated with
that ICON (that is, that have the same unique ICON number) are read and
processed. Any child ICONs are put on a stack or queue to be processed next. To
see the list of possible record types, see <a href="#record_types">Record
Types</a>.</p>
<p>The heart of the picture that is generated is the ICONs. In general, each
ICON represents an operation performed during the execution of the query. It is
up to the user to create and design the ICONs to be used. The connection
between the output data and the user's ICONs is the label of the ICON that is
returned within the new ICON record (record type of 10). The user is expected
to match the non-translated label that is returned to the label that
corresponds to the specific ICON. The non-translated ICON label is returned in
the character output field. The translated ICON label is returned in the column
heading field. For a list of ICON labels, see <a href="#icon_labels">ICON
Labels</a>. For a detailed description of the operation represented by each
ICON, see <a href="../rzajq/rzajqkickoff.htm">Database Performance and Query
Optimization</a> in the iSeries Information Center.</p>
<br>
<h3>Authorities and Locks</h3>
<dl>
<dt><em>Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>Table Authority</em></dt>
<dd>*OBJOPR, *READ</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Pointer to the qualified query</strong></dt>
<dd>INPUT; CHAR(*)<br>
<p>A pointer to a variable length structure that is used to determine the query
to be explained. The structure contains two variables:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="bottom">Type</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="left" valign="top" width="15%">BINARY(2)</td>
<td align="left" valign="top" width="85%">Length of the structure that contains
the qualified query.</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Structure used to determine the specific query to
be explained. This structure contains seven variables. Generally, these
variables are set to the same value as the corrsponding variables in the QQJFLD
field within the QQQ1000 record of the query to be explained. One way to find
the appropriate QQQ1000 record within the database monitor table is to view the
SQL statement text (field QQ1000) and compare it to the SQL statement text of
the query you wish to have explained.
<dl>
<dt><em>System name</em></dt>
<dd>CHAR(8). A specific iSeries name. It is set to the same value as the QQSYS
field or the first 8 bytes of field QQJFLD.</dd>
<dt><em>Job name</em></dt>
<dd>CHAR(10). A specific job name. It is set to the same value as the QQJOB
field or bytes 9 to 18 of field QQJFLD.</dd>
<dt><em>Job user</em></dt>
<dd>CHAR(10). A specific user profile name. It is set to the same value as the
QQUSER field or bytes 19 to 28 of field QQJFLD.</dd>
<dt><em>Job number</em></dt>
<dd>CHAR(6). A specific job number. It is set to the same value as the QQJNUM
field or bytes 29 to 34 of field QQJFLD.</dd>
<dt><em>Unique query count</em></dt>
<dd>BINARY(4). A unique query number. It is set to the same value as found in
bytes 35 to 38 of field QQJFLD (that is, Select hex(substr(QQJFLD,35,4)) From
Montable).</dd>
<dt><em>Statement number</em></dt>
<dd>BINARY(4). A specific statement number. It is set to the same value as
found in bytes 39 to 42 of field QQJFLD (that is, Select
hex(substr(QQJFLD,39,4)) From Montable).</dd>
<dt><em>Query Definition Template (QDT) number</em></dt>
<dd>BINARY(4). A specific QDT number. It is set to the same value as found in
bytes 43 to 46 of field QQJFLD (that is, Select hex(substr(QQJFLD,43,4)) From
Montable).</dd>
</dl>
</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Pointer to qualified monitor table</strong></dt>
<dd>INPUT; CHAR(*)<br>
<p>A pointer to a CHAR(72) structure containing the name of the database
monitor table and other optional variables. The structure contains nine
variables:</p>
<table cellpadding="5">
<tr>
<th align="left" valign="bottom">Type</th>
<th align="left" valign="bottom">Variable</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="left" valign="top" width="15%">CHAR(10)</td>
<td align="left" valign="top" width="25%">Monitor table name</td>
<td align="left" valign="top" width="60%">Name of the database monitor table
that contains the query to be explained.</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Monitor library name</td>
<td align="left" valign="top">Library of the database monitor table.</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(3)</td>
<td align="left" valign="top">Date format</td>
<td align="left" valign="top">A specific date format or blanks. I f blank, the
date format of the current job will be extracted and used. Possible date
formats are:<br>
<ul>
<li>USA</li>
<li>ISO</li>
<li>EUR</li>
<li>JIS</li>
<li>MDY</li>
<li>DMY</li>
<li>YMD</li>
<li>JUL</li>
</ul>
</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Date separator</td>
<td align="left" valign="top">A specific date separator or J. If J, the date
separator of the current job will be extracted and used. Possible date
separators are:<br>
<ul>
<li>"/"</li>
<li>"-"</li>
<li>"."</li>
<li>","</li>
<li>" "</li>
</ul>
</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(3)</td>
<td align="left" valign="top">Time format</td>
<td align="left" valign="top">A specific time format. It must be one of the
following values:<br>
<ul>
<li>USA</li>
<li>ISO</li>
<li>EUR</li>
<li>JIS</li>
<li>HMS</li>
</ul>
</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Time separator</td>
<td align="left" valign="top">A specific time separator or J. If J, the time
separator of the current job will be extracted and used. Possible time
separators are:<br>
<ul>
<li>":"</li>
<li>"."</li>
<li>","</li>
<li>" "</li>
</ul>
</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Decimal point</td>
<td align="left" valign="top">A specific decimal point, J, or blank. If J or
blank, the decimal point of the current job will be extracted and used.
Possible decimal points are:<br>
<ul>
<li>"."</li>
<li>","</li>
</ul>
</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(3)</td>
<td align="left" valign="top">Language ID</td>
<td align="left" valign="top">A specific language ID, J, or blanks. If J or
blanks, the language ID of the current job will be extracted and used.
Currently, the language ID is not used and it is recommended this value be set
to blanks.</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(40)</td>
<td align="left" valign="top">Reserved</td>
<td align="left" valign="top">Open for future expansion. These should be set to
hexadecimal zeros.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Pointer to output data</strong></dt>
<dd>I/O; PTR(SPP)<br>
<p>A pointer to data that can be viewed as a set of records or multiple entries
within an array. This data is used to determine the pictorial representation of
the query. The user can retrieve the data in any manner. One suggested method
is to view the returned data as a set of records and use the SET RESULTS SETS
command within an SQL procedure to retrieve the output data. To see the format
of the output data, see <a href="#output_format">Output Format</a>. Once finished,
it is up to the user to deallocate or destroy the space containing the output
data.</p>
</dd>
<dt><strong>Pointer to output return code</strong></dt>
<dd>I/O; CHAR(*)<br>
<p>Pointer to a CHAR(32) structure that contains the following output
information:</p>
<table cellpadding="5">
<tr>
<th align="left" valign="bottom">Type</th>
<th align="left" valign="bottom">Variable</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="left" valign="top" width="15%">BINARY(4)</td>
<td align="left" valign="top" width="25%">Error code</td>
<td align="left" valign="top" width="60%">Error code returned from the Visual
Explain consolidator. See <a href="#error_codes">Error Codes</a> for a list of
possible return codes.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of records returned</td>
<td align="left" valign="top">Number of records (or array entries)
returned.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Final select record</td>
<td align="left" valign="top">Record number (or array entry), within the set of
records returned, of the Final Select ICON.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved</td>
<td align="left" valign="top">Currently not used.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved</td>
<td align="left" valign="top">Currently not used.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved</td>
<td align="left" valign="top">Currently not used.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved</td>
<td align="left" valign="top">Currently not used.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved</td>
<td align="left" valign="top">Currently not used.</td>
</tr>
</table>
</dd>
</dl>
<br>
<h3><a name="usage_notes">Usage Notes</a></h3>
<p>This function is threadsafe, but not thread-enabled. Database monitor data
is collected in the threaded process.</p>
<br>
<h3><a name="output_format">Output Format</a></h3>
<p>The format for each record (or each array entry) in the output data is as
follows:</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Unique ICON number.<br>
<p>Each icon in the picture is given a unique number. This value is what ties
the records together; that is, all records with the same unique ICON number are
associated with that specific ICON.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)<br>
</td>
<td align="left" valign="top">Record type or ID.
<p>Each record can be one of many possible types. See <a href="#record_types">
Record Types</a> for the list of possible record types. A record type of 10
(new ICON) indicates another ICON was added to the picture and its unique
number can be found in the unique ICON number field.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="center" valign="top">8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Context type.<br>
<p>The type of context with which this record is associated. A context is a
group of values used for a special purpose. See <a href="#context_types">Context
Types</a> for the list of possible contexts.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Context order.<br>
<p>If this record is associated with a context type, this is the order, or
position, within the context for the value. For example, table name would have
a context order of two since it is the second variable of information
associated with the table description context. Table library would have a
context order of one.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Flyover order.<br>
<p>The order, or position, within the flyover information for this value. The
flyover information is the information that is shown when the cursor is held
over a particular ICON and a window pops up showing some of the data attributes
associated with that ICON.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Arrow order.<br>
<p>The order, or position, within the arrow information for this value. The
arrow information is the information shown on the arrows that connect the
ICONs.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Arrow value.<br>
<p>The value shown on the arrow that connects the ICONs together. Generally,
this value is either the estimated number of rows or the estimated processing
time.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Format value.<br>
<p>Used to highlight or format output data. For example, all header lines
within the data attributes will have a format value associated with them. This
identifies all the header records and allows users the option to format these
specific records in the same manner.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Specifies (yes or no) if the data attributes
associated with the ICON are returned in a predetermined (numerical) order.
This variable is set only for the record whose context type is new ICON. This
variable is pertinent only to those users who wish to show the data attributes
in the same order that the Visual Explain consolidator returned them. Users who
wish to choose their own order of data attributes can simply ignore this
indicator.</td>
</tr>
<tr>
<td align="center" valign="top">33</td>
<td align="center" valign="top">21</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Type of output data.<br>
<p>The type of output data is either "C", "N", or "X". It is the field that
contains the character output ("C") or the field that contains the numeric
output ("N"). It tells the user which field to look in for the output data. A
value of "X" indicates the character output exceeds 1000 bytes and the
remaining character output is found on the following array entry.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">34</td>
<td align="center" valign="top">22</td>
<td align="left" valign="top">BINARY(2)</td>
<td align="left" valign="top">Length, in bytes, of the column heading.</td>
</tr>
<tr>
<td align="center" valign="top">36</td>
<td align="center" valign="top">24</td>
<td align="left" valign="top">CHAR(128)</td>
<td align="left" valign="top">Column heading.<br>
<p>The description, or heading, of the output data. For a record type of new
ICON, this will be the label of the ICON. For a data attribute record type,
this will be a description of the data attribute; for example, Table name.</p>
</td>
</tr>
<tr>
<td align="center" valign="top">164</td>
<td align="center" valign="top">A4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved.</td>
</tr>
<tr>
<td align="center" valign="top">168</td>
<td align="center" valign="top">A8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved.</td>
</tr>
<tr>
<td align="center" valign="top">172</td>
<td align="center" valign="top">AC</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reserved.</td>
</tr>
<tr>
<td align="center" valign="top">176</td>
<td align="center" valign="top">B0</td>
<td align="left" valign="top">BINARY(2)</td>
<td align="left" valign="top">Length, in bytes, of the character output
data.<br>
<p>It is set only if the type of output is "C" or "X".</p>
</td>
</tr>
<tr>
<td align="center" valign="top">178</td>
<td align="center" valign="top">B2</td>
<td align="left" valign="top">CHAR(1000)</td>
<td align="left" valign="top">Character output.<br>
<p>The character output could be many things, depending on the record type. For
a new ICON record, the character output is the label associated with the ICON.
For a data attribute, the character output is the value for that data
attribute. For example, if the column heading was Table name, then the
character output would be TABLE001. It is set only if the type of output is "C"
or "X".</p>
</td>
</tr>
<tr>
<td align="center" valign="top">1178</td>
<td align="center" valign="top">49A</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Numeric output.<br>
<p>The numeric output is used only for a record that has a numeric output (that
is, the child ICON record type or number of child ICONs record type).
Generally, most records (especially data attribute records) have their output
converted to character format. It is set only if the type of output is "N".</p>
</td>
</tr>
<tr>
<td align="center" valign="top">1182</td>
<td align="center" valign="top">49E</td>
<td align="left" valign="top">BINARY(2)</td>
<td align="left" valign="top">Reserved.</td>
</tr>
</table>
<br>
<h3><a name="icon_labels">ICON Labels</a></h3>
<p>To determine which ICON should be shown, look at the non-translated ICON
label that is returned in the character output field. Compare this text string
to the text string associated with the user-generated ICONs. The ICON labels
that may be returned are shown below. For a detailed description of the
operation represented by the ICON, refer to <a href="../rzajq/rzajqkickoff.htm">
Database Performance and Query Optimization</a> in the iSeries Information
Center.</p>
<table border width="100%">
<tr>
<th align="left" valign="bottom">ICON Label</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="left" valign="top" width="20%">Table Scan</td>
<td align="left" valign="top" width="80%">All rows in the table were paged in
and selection criteria was applied against each row. Only those rows meeting
the selection criteria were retrieved. To get the result in a particular
sequence, you must specify the ORDER BY clause.</td>
</tr>
<tr>
<td align="left" valign="top">Table Scan, Parallel</td>
<td align="left" valign="top">A table scan access method was used and multiple
tasks were used to select the rows in parallel. The table was partitioned and
each task was given a portion of the table with which to work.</td>
</tr>
<tr>
<td align="left" valign="top">Index Scan - Key Selection</td>
<td align="left" valign="top">All entries of the index were paged in. (This is
different from key positioning, where only a specified range of key entries
were paged in.) Any selection criteria, whose predicates match the key columns
of the index, were applied against the index entries. Only selected key entries
were used to select rows from the corresponding table data.</td>
</tr>
<tr>
<td align="left" valign="top">Index Scan - Key Selection, Parallel</td>
<td align="left" valign="top">Multiple tasks were used to perform key selection
in parallel. The table was partitioned and each task was given a portion of the
table with which to work.</td>
</tr>
<tr>
<td align="left" valign="top">Index Scan - Key Positioning</td>
<td align="left" valign="top"><br>
</td>
</tr>
<tr>
<td align="left" valign="top">Index Scan - Key Positioning, Parallel</td>
<td align="left" valign="top">Multiple tasks were used to perform the key
positioning in parallel. The range of key values was determined by the
selection criteria whose predicates matched the key columns of the index. The
number of selected key entries were further reduced by the use of index key
selection or derived selection after key positioning was completed. Only
selected key entries were used to select rows from the corresponding table
data.</td>
</tr>
<tr>
<td align="left" valign="top">Skip Sequential Table Scan</td>
<td align="left" valign="top">A bitmap was used to determine which rows would
be selected. No CPU processing was done on rows not selected and I/O was
minimized by bringing in only those pages that contained rows to be
selected.</td>
</tr>
<tr>
<td align="left" valign="top">Skip Sequential Table Scan, Parallel</td>
<td align="left" valign="top">A skip sequential table scan access method was
used and multiple tasks were used to select the rows in parallel. The table was
partitioned and each task was given a portion of the table with which to
work.</td>
</tr>
<tr>
<td align="left" valign="top">Encoded Vector Index</td>
<td align="left" valign="top">Access was provided to a database file by
assigning codes to distinct key values, and then representing these values in
an array (vector). The elements of the array can be 1, 2, or 4 bytes in length,
depending on the number of distinct values that must be represented. Because of
their compact size and relative simplicity, encoded vector indexes provide for
faster scans that can be more easily processed in parallel.</td>
</tr>
<tr>
<td align="left" valign="top">Encoded Vector Index, Parallel</td>
<td align="left" valign="top">Multiple tasks were used to perform the encoded
vector index selection in parallel. T his allows for faster scans that can be
more easily processed in parallel. The elements of the array can be 1, 2, or 4
bytes in length, depending on the number of distinct values that must be
represented. Because of their compact size and relative simplicity, encoded
vector indexes provide for faster scans and can be more easily processed in
parallel.</td>
</tr>
<tr>
<td align="left" valign="top">Dynamic Bitmap</td>
<td align="left" valign="top">A bitmap was generated dynamically from an
existing index. It then was used to determine which rows were to be retrieved
from the table. To improve performance, dynamic bitmaps can be used in
conjunction with any of the following access methods:<br>
<ul>
<li>Skip sequential table scan</li>
<li>Index scan - key positioning</li>
<li>Index scan - key selection</li>
</ul>
</td>
</tr>
<tr>
<td align="left" valign="top">Temporary Table</td>
<td align="left" valign="top">A temporary table was required to contain the
intermediate results of the query, or the queried table could not be queried as
it currently exists and a temporary table was created to replace it.</td>
</tr>
<tr>
<td align="left" valign="top">Temporary Hash Table</td>
<td align="left" valign="top">A temporary hash table was created to perform
hash processing.</td>
</tr>
<tr>
<td align="left" valign="top">Temporary Index</td>
<td align="left" valign="top">A temporary hash table was created to perform
hash processing.</td>
</tr>
<tr>
<td align="left" valign="top">Hash Join</td>
<td align="left" valign="top">A temporary hash table was created to perform the
join. T he tables queried were joined together using a hash join implementation
where a hash table was created for each secondary table. Therefore, matching
values were hashed to the same hash table entry.</td>
</tr>
<tr>
<td align="left" valign="top">Nested Loop Join</td>
<td align="left" valign="top">Queried tables were joined together using a
nested loop join implementation. Values from the primary file were joined to
the secondary file using an index whose key columns matched the specified join
columns.</td>
</tr>
<tr>
<td align="left" valign="top">Index Grouping</td>
<td align="left" valign="top">Selected rows were grouped or summarized.
Therefore, duplicate rows within a group were eliminated.</td>
</tr>
<tr>
<td align="left" valign="top">Hash Grouping</td>
<td align="left" valign="top">Selected rows were grouped or summarized.
Therefore, duplicate rows within a group were eliminated.</td>
</tr>
<tr>
<td align="left" valign="top">Sort</td>
<td align="left" valign="top">Selected rows were sorted using a sort
algorithm.</td>
</tr>
<tr>
<td align="left" valign="top">Union Merge</td>
<td align="left" valign="top">The results of multiple subselects were merged or
combined into a single result.</td>
</tr>
<tr>
<td align="left" valign="top">Subquery Merge</td>
<td align="left" valign="top">The results of multiple subselects were merged or
combined into a single result.</td>
</tr>
<tr>
<td align="left" valign="top">Bitmap Merge</td>
<td align="left" valign="top">Multiple bitmaps were merged or combined to form
a final bitmap. The merging of the bitmaps simulates boolean logic (AND/OR
selection).</td>
</tr>
<tr>
<td align="left" valign="top">Distinct</td>
<td align="left" valign="top">Duplicate rows in the result were prevented. You
can specify that you do not want any duplicates by using the DISTINCT keyword,
followed by the selected column names.</td>
</tr>
<tr>
<td align="left" valign="top">Select</td>
<td align="left" valign="top">A point in the query where multiple results are
brought together into a single result set. For example, if a query is the union
of two different select statements, at the point before the union occurs, the
Select icon indicates the points where the select statements finished and the
union is about to occur.</td>
</tr>
<tr>
<td align="left" valign="top">Final Select</td>
<td align="left" valign="top">The original text and summary information of how
the query was implemented.</td>
</tr>
<tr>
<td align="left" valign="top">Insert</td>
<td align="left" valign="top">The original text and summary information of how
the query was implemented.</td>
</tr>
<tr>
<td align="left" valign="top">Update</td>
<td align="left" valign="top">The original text and summary information of how
the query was implemented.</td>
</tr>
<tr>
<td align="left" valign="top">Delete</td>
<td align="left" valign="top">The original text and summary information of how
the query was implemented.</td>
</tr>
<tr>
<td align="left" valign="top">Unknown</td>
<td align="left" valign="top">The operation performed is not recognized by
Visual Explain. For example, the system may support a new function that is not
yet supported by Visual Explain.</td>
</tr>
</table>
<br>
<h3><a name="context_types">Context Types</a></h3>
<p>BINARY(4) A context is a group of values used for a special purpose.</p>
<table border width="100%">
<tr>
<th align="left" valign="bottom">Context</th>
<th align="left" valign="bottom">Type</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">21</td>
<td align="left" valign="top" width="20%">Table Description</td>
<td align="left" valign="top" width="70%">The variables needed to retrieve
information about the table. These variables are:<br>
<ol>
<li>Table library</li>
<li>Table name</li>
</ol>
</td>
</tr>
<tr>
<td align="center" valign="top">22</td>
<td align="left" valign="top">Index Description</td>
<td align="left" valign="top">The variables needed to retrieve information
about the index. These variables are:<br>
<ol>
<li>Index library</li>
<li>Index name</li>
</ol>
</td>
</tr>
<tr>
<td align="center" valign="top">23</td>
<td align="left" valign="top">Create Index Attributes</td>
<td align="left" valign="top">The information needed to create an index. This
includes:<br>
<ol>
<li>Library of base table</li>
<li>Name of base table</li>
<li>Type of index to create:
<blockquote><em>"B"</em>&nbsp;&nbsp;Binary radix index<br>
<em>"E"</em>&nbsp;&nbsp;Encoded vector index
</blockquote>
</li>
<li>Number of unique values</li>
<li>Key columns</li>
<li>Alternate collating sequence library name</li>
<li>Alternate collating sequence table name</li>
</ol>
</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="left" valign="top">Environment Attributes</td>
<td align="left" valign="top">Information about the environment when the query
was executed. This includes:<br>
<ol>
<li>Memory pool size</li>
<li>Memory pool ID</li>
<li>Date format</li>
<li>Date separator</li>
<li>Time format</li>
<li>Time separator</li>
<li>Decimal point</li>
<li>Sort sequence table name</li>
<li>Sort sequence library name</li>
<li>Language ID</li>
<li>Query INI table name</li>
<li>Query INI library name</li>
<li>Query time limit</li>
<li>Parallel degree</li>
<li>Maximum number of tasks</li>
<li>Parameter marker conversion</li>
</ol>
</td>
</tr>
</table>
<br>
<h3>Format Types</h3>
<p>BINARY(4) The formatting value is used to format or highlight similar output
data. For example, all header lines within the data attribute output will have
a format value associated with them. This allows the user the option to
identify and format all these particular header lines in the same manner.</p>
<table border width="100%">
<tr>
<th align="left" valign="bottom">Format</th>
<th align="left" valign="bottom">Type</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="center" valign="top" width="15%">8</td>
<td align="left" valign="top" width="25%">Index Advised</td>
<td align="left" valign="top" width="60%">Data attributes associated with the
index advised function.</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="left" valign="top">Header</td>
<td align="left" valign="top">Header line within the data attribute
output.</td>
</tr>
</table>
<br>
<h3><a name="record_types">Record Types</a></h3>
<p>Generally, record types with a value less than 100 are used to construct the
picture. For example, they determine which ICONs are connected together. Record
types with a value greater than 1000 are data attributes (information
associated with a particular ICON). For a detailed description of the data
attributes, see <a href="../rzajq/rzajqkickoff.htm">Database Performance
and Query Optimization</a> in the iSeries Information Center.</p>
<table width="100%">
<tr>
<th align="left" valign="bottom">Record Type</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="center" valign="top" width="15%">10</td>
<td align="left" valign="top" width="85%">New ICON.</td>
</tr>
<tr>
<td align="center" valign="top">11</td>
<td align="left" valign="top">Number of child ICONs.</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="left" valign="top">Unique ICON number of the child ICON.</td>
</tr>
<tr>
<td align="center" valign="top">111</td>
<td align="left" valign="top">Heading only, no output data.</td>
</tr>
<tr>
<td align="center" valign="top">1010</td>
<td align="left" valign="top">Name of the index created.</td>
</tr>
<tr>
<td align="center" valign="top">1011</td>
<td align="left" valign="top">Library of the index created.</td>
</tr>
<tr>
<td align="center" valign="top">1012</td>
<td align="left" valign="top">Name of the temporary table created.</td>
</tr>
<tr>
<td align="center" valign="top">1013</td>
<td align="left" valign="top">Library of the temporary table created.</td>
</tr>
<tr>
<td align="center" valign="top">1014</td>
<td align="left" valign="top">Name of the temporary hash table created.</td>
</tr>
<tr>
<td align="center" valign="top">1015</td>
<td align="left" valign="top">Library of the temporary hash table created.</td>
</tr>
<tr>
<td align="center" valign="top">1031</td>
<td align="left" valign="top">Library of the table being queried.</td>
</tr>
<tr>
<td align="center" valign="top">1032</td>
<td align="left" valign="top">Name of the table being queried.</td>
</tr>
<tr>
<td align="center" valign="top">1033</td>
<td align="left" valign="top">Member name of the table being queried.</td>
</tr>
<tr>
<td align="center" valign="top">1034</td>
<td align="left" valign="top">Long name of the table being queried.</td>
</tr>
<tr>
<td align="center" valign="top">1035</td>
<td align="left" valign="top">Long library of the table being queried.</td>
</tr>
<tr>
<td align="center" valign="top">1041</td>
<td align="left" valign="top">Library of the base table.</td>
</tr>
<tr>
<td align="center" valign="top">1042</td>
<td align="left" valign="top">Name of the base table (underlying physical
table).</td>
</tr>
<tr>
<td align="center" valign="top">1043</td>
<td align="left" valign="top">Member name of the base table.</td>
</tr>
<tr>
<td align="center" valign="top">1044</td>
<td align="left" valign="top">Long name of the base table.</td>
</tr>
<tr>
<td align="center" valign="top">1045</td>
<td align="left" valign="top">Long library of the base table.</td>
</tr>
<tr>
<td align="center" valign="top">1051</td>
<td align="left" valign="top">Library of the index used.</td>
</tr>
<tr>
<td align="center" valign="top">1052</td>
<td align="left" valign="top">Name of the index used.</td>
</tr>
<tr>
<td align="center" valign="top">1053</td>
<td align="left" valign="top">Member name of the index used.</td>
</tr>
<tr>
<td align="center" valign="top">1054</td>
<td align="left" valign="top">Long name of the index used.</td>
</tr>
<tr>
<td align="center" valign="top">1055</td>
<td align="left" valign="top">Long library of the index used.</td>
</tr>
<tr>
<td align="center" valign="top">1102</td>
<td align="left" valign="top">Time when the database monitor record was
created.</td>
</tr>
<tr>
<td align="center" valign="top">1104</td>
<td align="left" valign="top">Timestamp of when the SQL statment started.</td>
</tr>
<tr>
<td align="center" valign="top">1106</td>
<td align="left" valign="top">Timestamp of when the SQL statement ended.</td>
</tr>
<tr>
<td align="center" valign="top">1108</td>
<td align="left" valign="top">Amount of time spent during optimization, in
seconds.</td>
</tr>
<tr>
<td align="center" valign="top">1110</td>
<td align="left" valign="top">Amount of time spent creating the cursor (open
data path), in seconds.</td>
</tr>
<tr>
<td align="center" valign="top">1112</td>
<td align="left" valign="top">Total time for the SQL statement, in
milliseconds.</td>
</tr>
<tr>
<td align="center" valign="top">1114</td>
<td align="left" valign="top">Total time for the SQL statement, in
microseconds.</td>
</tr>
<tr>
<td align="center" valign="top">1120</td>
<td align="left" valign="top">Statement OPEN time, in milliseconds.</td>
</tr>
<tr>
<td align="center" valign="top">1122</td>
<td align="left" valign="top">Statement FETCH time, in milliseconds.</td>
</tr>
<tr>
<td align="center" valign="top">1124</td>
<td align="left" valign="top">Statement CLOSE time, in milliseconds.</td>
</tr>
<tr>
<td align="center" valign="top">1220</td>
<td align="left" valign="top">Statement number.</td>
</tr>
<tr>
<td align="center" valign="top">1222</td>
<td align="left" valign="top">Statement function.</td>
</tr>
<tr>
<td align="center" valign="top">1224</td>
<td align="left" valign="top">Statement operation.</td>
</tr>
<tr>
<td align="center" valign="top">1226</td>
<td align="left" valign="top">Statement type.</td>
</tr>
<tr>
<td align="center" valign="top">1228</td>
<td align="left" valign="top">Statement name.</td>
</tr>
<tr>
<td align="center" valign="top">1230</td>
<td align="left" valign="top">Statement outcome.</td>
</tr>
<tr>
<td align="center" valign="top">1232</td>
<td align="left" valign="top">SQL return code.</td>
</tr>
<tr>
<td align="center" valign="top">1234</td>
<td align="left" valign="top">SQLSTATE.</td>
</tr>
<tr>
<td align="center" valign="top">1240</td>
<td align="left" valign="top">Cursor name.</td>
</tr>
<tr>
<td align="center" valign="top">1242</td>
<td align="left" valign="top">Package name.</td>
</tr>
<tr>
<td align="center" valign="top">1244</td>
<td align="left" valign="top">Package library.</td>
</tr>
<tr>
<td align="center" valign="top">1250</td>
<td align="left" valign="top">Number of rows returned.</td>
</tr>
<tr>
<td align="center" valign="top">1252</td>
<td align="left" valign="top">Number of rows fetched.</td>
</tr>
<tr>
<td align="center" valign="top">1260</td>
<td align="left" valign="top">SQL statement text.</td>
</tr>
<tr>
<td align="center" valign="top">1306</td>
<td align="left" valign="top">CLOSQLCSR value.</td>
</tr>
<tr>
<td align="center" valign="top">1308</td>
<td align="left" valign="top">ALWCPYDTA value.</td>
</tr>
<tr>
<td align="center" valign="top">1310</td>
<td align="left" valign="top">Pseudo open.</td>
</tr>
<tr>
<td align="center" valign="top">1312</td>
<td align="left" valign="top">Pseudo close.</td>
</tr>
<tr>
<td align="center" valign="top">1313</td>
<td align="left" valign="top">Hard close reason code.</td>
</tr>
<tr>
<td align="center" valign="top">1314</td>
<td align="left" valign="top">Open data path implementation.</td>
</tr>
<tr>
<td align="center" valign="top">1320</td>
<td align="left" valign="top">Dynamic replan reason code.</td>
</tr>
<tr>
<td align="center" valign="top">1324</td>
<td align="left" valign="top">Dynamic replan reason subcode.</td>
</tr>
<tr>
<td align="center" valign="top">1326</td>
<td align="left" valign="top">Timestamp of the last replan.</td>
</tr>
<tr>
<td align="center" valign="top">1330</td>
<td align="left" valign="top">Parse required.</td>
</tr>
<tr>
<td align="center" valign="top">1332</td>
<td align="left" valign="top">Data conversion.</td>
</tr>
<tr>
<td align="center" valign="top">1334</td>
<td align="left" valign="top">Level of commitment control.</td>
</tr>
<tr>
<td align="center" valign="top">1336</td>
<td align="left" valign="top">Blocking enabled.</td>
</tr>
<tr>
<td align="center" valign="top">1338</td>
<td align="left" valign="top">Delay preperation.</td>
</tr>
<tr>
<td align="center" valign="top">1339</td>
<td align="left" valign="top">Statement is explainable.</td>
</tr>
<tr>
<td align="center" valign="top">1340</td>
<td align="left" valign="top">Type of naming convention.</td>
</tr>
<tr>
<td align="center" valign="top">1342</td>
<td align="left" valign="top">Type of dynamic execution.</td>
</tr>
<tr>
<td align="center" valign="top">1344</td>
<td align="left" valign="top">Optimize LOB.</td>
</tr>
<tr>
<td align="center" valign="top">1350</td>
<td align="left" valign="top">User profile, static.</td>
</tr>
<tr>
<td align="center" valign="top">1352</td>
<td align="left" valign="top">User profile, dynamic.</td>
</tr>
<tr>
<td align="center" valign="top">1354</td>
<td align="left" valign="top">Default collection.</td>
</tr>
<tr>
<td align="center" valign="top">1360</td>
<td align="left" valign="top">Procedure name on the call.</td>
</tr>
<tr>
<td align="center" valign="top">1362</td>
<td align="left" valign="top">Procedure library on the call.</td>
</tr>
<tr>
<td align="center" valign="top">1364</td>
<td align="left" valign="top">Directory path.</td>
</tr>
<tr>
<td align="center" valign="top">2012</td>
<td align="left" valign="top">Estimated processing time, in seconds.</td>
</tr>
<tr>
<td align="center" valign="top">2016</td>
<td align="left" valign="top">Cumulative processing time, in seconds.</td>
</tr>
<tr>
<td align="center" valign="top">2018</td>
<td align="left" valign="top">Total number of rows in the table.</td>
</tr>
<tr>
<td align="center" valign="top">2020</td>
<td align="left" valign="top">Size of the table.</td>
</tr>
<tr>
<td align="center" valign="top">2042</td>
<td align="left" valign="top">Estimated number of rows selected.</td>
</tr>
<tr>
<td align="center" valign="top">2044</td>
<td align="left" valign="top">Estimated number of joined rows.</td>
</tr>
<tr>
<td align="center" valign="top">2046</td>
<td align="left" valign="top">Join position.</td>
</tr>
<tr>
<td align="center" valign="top">2048</td>
<td align="left" valign="top">Original file position.</td>
</tr>
<tr>
<td align="center" valign="top">2050</td>
<td align="left" valign="top">Join method.</td>
</tr>
<tr>
<td align="center" valign="top">2052</td>
<td align="left" valign="top">Join type.</td>
</tr>
<tr>
<td align="center" valign="top">2054</td>
<td align="left" valign="top">Join operator.</td>
</tr>
<tr>
<td align="center" valign="top">2056</td>
<td align="left" valign="top">Join fanout.</td>
</tr>
<tr>
<td align="center" valign="top">2058</td>
<td align="left" valign="top">Number of files joined.</td>
</tr>
<tr>
<td align="center" valign="top">2070</td>
<td align="left" valign="top">I/O or CPU bound.</td>
</tr>
<tr>
<td align="center" valign="top">2080</td>
<td align="left" valign="top">Reason code.</td>
</tr>
<tr>
<td align="center" valign="top">2110</td>
<td align="left" valign="top">Index scan, key positioning.</td>
</tr>
<tr>
<td align="center" valign="top">2112</td>
<td align="left" valign="top">Number of key columns for key positioning.</td>
</tr>
<tr>
<td align="center" valign="top">2114</td>
<td align="left" valign="top">Estimated number of entries selected through key
positioning.</td>
</tr>
<tr>
<td align="center" valign="top">2116</td>
<td align="left" valign="top">Index scan, key selection.</td>
</tr>
<tr>
<td align="center" valign="top">2118</td>
<td align="left" valign="top">Estimated number of entries selected through key
selection.</td>
</tr>
<tr>
<td align="center" valign="top">2122</td>
<td align="left" valign="top">Index only access.</td>
</tr>
<tr>
<td align="center" valign="top">2124</td>
<td align="left" valign="top">Index fits into main memory.</td>
</tr>
<tr>
<td align="center" valign="top">2126</td>
<td align="left" valign="top">Memory pool size.</td>
</tr>
<tr>
<td align="center" valign="top">2128</td>
<td align="left" valign="top">Memory pool ID.</td>
</tr>
<tr>
<td align="center" valign="top">2130</td>
<td align="left" valign="top">Skip key processing.</td>
</tr>
<tr>
<td align="center" valign="top">2140</td>
<td align="left" valign="top">Type of index.</td>
</tr>
<tr>
<td align="center" valign="top">2141</td>
<td align="left" valign="top">Index usage.</td>
</tr>
<tr>
<td align="center" valign="top">2142</td>
<td align="left" valign="top">Number of entries in the index.</td>
</tr>
<tr>
<td align="center" valign="top">2144</td>
<td align="left" valign="top">Number of unique values in the index.</td>
</tr>
<tr>
<td align="center" valign="top">2146</td>
<td align="left" valign="top">Percent overflow for the index.</td>
</tr>
<tr>
<td align="center" valign="top">2148</td>
<td align="left" valign="top">Vector size of the index.</td>
</tr>
<tr>
<td align="center" valign="top">2150</td>
<td align="left" valign="top">Size of the index used.</td>
</tr>
<tr>
<td align="center" valign="top">2152</td>
<td align="left" valign="top">Page size of the index used.</td>
</tr>
<tr>
<td align="center" valign="top">2154</td>
<td align="left" valign="top">Reason code of why index was used.</td>
</tr>
<tr>
<td align="center" valign="top">2160</td>
<td align="left" valign="top">Index is a constraint.</td>
</tr>
<tr>
<td align="center" valign="top">2162</td>
<td align="left" valign="top">Name of the constraint.</td>
</tr>
<tr>
<td align="center" valign="top">2182</td>
<td align="left" valign="top">Data space selection exists.</td>
</tr>
<tr>
<td align="center" valign="top">2184</td>
<td align="left" valign="top">Skip sequential processing was used.</td>
</tr>
<tr>
<td align="center" valign="top">2190</td>
<td align="left" valign="top">Reason code for the table scan processing.</td>
</tr>
<tr>
<td align="center" valign="top">2220</td>
<td align="left" valign="top">Index is a constraint.</td>
</tr>
<tr>
<td align="center" valign="top">2222</td>
<td align="left" valign="top">Name of the constraint.</td>
</tr>
<tr>
<td align="center" valign="top">2224</td>
<td align="left" valign="top">Data space selection exists.</td>
</tr>
<tr>
<td align="center" valign="top">2226</td>
<td align="left" valign="top">Skip sequential processing was used.</td>
</tr>
<tr>
<td align="center" valign="top">2320</td>
<td align="left" valign="top">The query optimizer timed out.</td>
</tr>
<tr>
<td align="center" valign="top">2322</td>
<td align="left" valign="top">Reason code of why the index was not used.</td>
</tr>
<tr>
<td align="center" valign="top">2324</td>
<td align="left" valign="top">List of indexes which the query optimizer
considered.</td>
</tr>
<tr>
<td align="center" valign="top">2346</td>
<td align="left" valign="top">The query optimizer is advising an index to be
created.</td>
</tr>
<tr>
<td align="center" valign="top">2348</td>
<td align="left" valign="top">The number of key columns within the index
advised that will use key positioning.</td>
</tr>
<tr>
<td align="center" valign="top">2350</td>
<td align="left" valign="top">The list of key columns for the index
advised.</td>
</tr>
<tr>
<td align="center" valign="top">2380</td>
<td align="left" valign="top">Was parallel pre-fetch used.</td>
</tr>
<tr>
<td align="center" valign="top">2382</td>
<td align="left" valign="top">Was parallel pre-load used.</td>
</tr>
<tr>
<td align="center" valign="top">2384</td>
<td align="left" valign="top">Parallel degree requested by the query
optimizer.</td>
</tr>
<tr>
<td align="center" valign="top">2386</td>
<td align="left" valign="top">Parallel degree used.</td>
</tr>
<tr>
<td align="center" valign="top">2388</td>
<td align="left" valign="top">Reason code why the parallel degree requested by
the optimizer was not used.</td>
</tr>
<tr>
<td align="center" valign="top">2402</td>
<td align="left" valign="top">Number of entries in the temporary index
created.</td>
</tr>
<tr>
<td align="center" valign="top">2404</td>
<td align="left" valign="top">Page size of the temporary index created.</td>
</tr>
<tr>
<td align="center" valign="top">2406</td>
<td align="left" valign="top">Row size of the temporary index created.</td>
</tr>
<tr>
<td align="center" valign="top">2408</td>
<td align="left" valign="top">Was an alternate collating sequence table used to
create the temporary index.</td>
</tr>
<tr>
<td align="center" valign="top">2409</td>
<td align="left" valign="top">Name of the alternate collating sequence table
used to create the temporary index.</td>
</tr>
<tr>
<td align="center" valign="top">2410</td>
<td align="left" valign="top">Library of the alternate collating sequence table
used to create the temporary index.</td>
</tr>
<tr>
<td align="center" valign="top">2412</td>
<td align="left" valign="top">Is the temporary index that was created
reusable.</td>
</tr>
<tr>
<td align="center" valign="top">2414</td>
<td align="left" valign="top">Is the temporary index that was created a sparse
or select/omit index.</td>
</tr>
<tr>
<td align="center" valign="top">2416</td>
<td align="left" valign="top">Type of index that was created.</td>
</tr>
<tr>
<td align="center" valign="top">2418</td>
<td align="left" valign="top">Was the index created as a permanent object.</td>
</tr>
<tr>
<td align="center" valign="top">2420</td>
<td align="left" valign="top">Was the index created from another index.</td>
</tr>
<tr>
<td align="center" valign="top">2422</td>
<td align="left" valign="top">Parallel degree requested by query optimizer for
creation of the index.</td>
</tr>
<tr>
<td align="center" valign="top">2424</td>
<td align="left" valign="top">Parallel degree used during creation of the
index.</td>
</tr>
<tr>
<td align="center" valign="top">2426</td>
<td align="left" valign="top">Reason code why the parallel degree requested by
the optimizer for the index creation was not used.</td>
</tr>
<tr>
<td align="center" valign="top">2428</td>
<td align="left" valign="top">Reason code why a temporary index was
created.</td>
</tr>
<tr>
<td align="center" valign="top">2430</td>
<td align="left" valign="top">Key columns used when creating the temporary
index.</td>
</tr>
<tr>
<td align="center" valign="top">2510</td>
<td align="left" valign="top">Number of rows within the temporary table.</td>
</tr>
<tr>
<td align="center" valign="top">2512</td>
<td align="left" valign="top">Size of the temporary table.</td>
</tr>
<tr>
<td align="center" valign="top">2514</td>
<td align="left" valign="top">Row size of the temporary table.</td>
</tr>
<tr>
<td align="center" valign="top">2516</td>
<td align="left" valign="top">Default values exist in temporary table.</td>
</tr>
<tr>
<td align="center" valign="top">2518</td>
<td align="left" valign="top">Temporary table created is a temporary result
table.</td>
</tr>
<tr>
<td align="center" valign="top">2520</td>
<td align="left" valign="top">Temporary table created is a distributed
table.</td>
</tr>
<tr>
<td align="center" valign="top">2522</td>
<td align="left" valign="top">Nodes where the temporary distributed table was
created.</td>
</tr>
<tr>
<td align="center" valign="top">2524</td>
<td align="left" valign="top">Reason code why a temporary table was
created.</td>
</tr>
<tr>
<td align="center" valign="top">2550</td>
<td align="left" valign="top">Number of rows within the temporary hash
table.</td>
</tr>
<tr>
<td align="center" valign="top">2552</td>
<td align="left" valign="top">Size of the temporary hash table.</td>
</tr>
<tr>
<td align="center" valign="top">2554</td>
<td align="left" valign="top">Row size of the temporary hash table.</td>
</tr>
<tr>
<td align="center" valign="top">2556</td>
<td align="left" valign="top">Key size of the temporary hash table.</td>
</tr>
<tr>
<td align="center" valign="top">2558</td>
<td align="left" valign="top">Element size of the temporary hash table.</td>
</tr>
<tr>
<td align="center" valign="top">2560</td>
<td align="left" valign="top">Memory pool size where temporary hash table was
created.</td>
</tr>
<tr>
<td align="center" valign="top">2562</td>
<td align="left" valign="top">Memory pool ID where temporary hash table was
created.</td>
</tr>
<tr>
<td align="center" valign="top">2563</td>
<td align="left" valign="top">Reason code why a temporary hash table was
created.</td>
</tr>
<tr>
<td align="center" valign="top">2564</td>
<td align="left" valign="top">Columns used when creating the temporary hash
table.</td>
</tr>
<tr>
<td align="center" valign="top">2612</td>
<td align="left" valign="top">Columns used for dataspace selection.</td>
</tr>
<tr>
<td align="center" valign="top">2614</td>
<td align="left" valign="top">Was derived selection used.</td>
</tr>
<tr>
<td align="center" valign="top">2616</td>
<td align="left" valign="top">Columns used for derived selection.</td>
</tr>
<tr>
<td align="center" valign="top">2620</td>
<td align="left" valign="top">Columns used for key positioning.</td>
</tr>
<tr>
<td align="center" valign="top">2622</td>
<td align="left" valign="top">Columns used for key selection.</td>
</tr>
<tr>
<td align="center" valign="top">2624</td>
<td align="left" valign="top">Columns used for join selection.</td>
</tr>
<tr>
<td align="center" valign="top">2626</td>
<td align="left" valign="top">Columns used for ordering.</td>
</tr>
<tr>
<td align="center" valign="top">2628</td>
<td align="left" valign="top">Columns used for grouping.</td>
</tr>
<tr>
<td align="center" valign="top">2810</td>
<td align="left" valign="top">Type of grouping implementation.</td>
</tr>
<tr>
<td align="center" valign="top">2812</td>
<td align="left" valign="top">Does HAVING selection exist.</td>
</tr>
<tr>
<td align="center" valign="top">2814</td>
<td align="left" valign="top">Was the HAVING selection converted into WHERE
seletion.</td>
</tr>
<tr>
<td align="center" valign="top">2816</td>
<td align="left" valign="top">Estimated number of groups.</td>
</tr>
<tr>
<td align="center" valign="top">2818</td>
<td align="left" valign="top">Average number of rows within each group.</td>
</tr>
<tr>
<td align="center" valign="top">2820</td>
<td align="left" valign="top">Grouping columns.</td>
</tr>
<tr>
<td align="center" valign="top">2822</td>
<td align="left" valign="top">MIN columns.</td>
</tr>
<tr>
<td align="center" valign="top">2824</td>
<td align="left" valign="top">MAX columns.</td>
</tr>
<tr>
<td align="center" valign="top">2826</td>
<td align="left" valign="top">SUM columns.</td>
</tr>
<tr>
<td align="center" valign="top">2828</td>
<td align="left" valign="top">COUNT columns.</td>
</tr>
<tr>
<td align="center" valign="top">2830</td>
<td align="left" valign="top">AVERAGE columns.</td>
</tr>
<tr>
<td align="center" valign="top">2910</td>
<td align="left" valign="top">Subselect number of the inner subselect.</td>
</tr>
<tr>
<td align="center" valign="top">2912</td>
<td align="left" valign="top">Nested level of the inner subselect.</td>
</tr>
<tr>
<td align="center" valign="top">2914</td>
<td align="left" valign="top">Subselect number of the materialized view
containing the inner subselect.</td>
</tr>
<tr>
<td align="center" valign="top">2916</td>
<td align="left" valign="top">Nested level of the materialized view containing
the inner subselect.</td>
</tr>
<tr>
<td align="center" valign="top">2920</td>
<td align="left" valign="top">Subquery operator.</td>
</tr>
<tr>
<td align="center" valign="top">2922</td>
<td align="left" valign="top">Correlated columns exist.</td>
</tr>
<tr>
<td align="center" valign="top">2924</td>
<td align="left" valign="top">List of the correlated columns.</td>
</tr>
<tr>
<td align="center" valign="top">3020</td>
<td align="left" valign="top">Size of the bitmap created.</td>
</tr>
<tr>
<td align="center" valign="top">3022</td>
<td align="left" valign="top">Number of bitmaps created.</td>
</tr>
<tr>
<td align="center" valign="top">3024</td>
<td align="left" valign="top">IDs of the bitmaps created.</td>
</tr>
<tr>
<td align="center" valign="top">3026</td>
<td align="left" valign="top">IDs of the bitmaps that were merged
together.</td>
</tr>
<tr>
<td align="center" valign="top">4020</td>
<td align="left" valign="top">System name.</td>
</tr>
<tr>
<td align="center" valign="top">4022</td>
<td align="left" valign="top">Job name.</td>
</tr>
<tr>
<td align="center" valign="top">4024</td>
<td align="left" valign="top">Job user.</td>
</tr>
<tr>
<td align="center" valign="top">4026</td>
<td align="left" valign="top">Job number.</td>
</tr>
<tr>
<td align="center" valign="top">4028</td>
<td align="left" valign="top">Unique query count.</td>
</tr>
<tr>
<td align="center" valign="top">4032</td>
<td align="left" valign="top">Subselect count.</td>
</tr>
<tr>
<td align="center" valign="top">4040</td>
<td align="left" valign="top">Relational database name.</td>
</tr>
<tr>
<td align="center" valign="top">4042</td>
<td align="left" valign="top">Thread ID.</td>
</tr>
<tr>
<td align="center" valign="top">4044</td>
<td align="left" valign="top">Unique refresh count.</td>
</tr>
<tr>
<td align="center" valign="top">4046</td>
<td align="left" valign="top">Subselect nested level.</td>
</tr>
<tr>
<td align="center" valign="top">4048</td>
<td align="left" valign="top">Materialization number of the subselect.</td>
</tr>
<tr>
<td align="center" valign="top">4050</td>
<td align="left" valign="top">Nested level of the subselect that was
materialized.</td>
</tr>
<tr>
<td align="center" valign="top">4052</td>
<td align="left" valign="top">Materialization number for the decomposed
subselect.</td>
</tr>
<tr>
<td align="center" valign="top">7008</td>
<td align="left" valign="top">List of the host variable values.</td>
</tr>
<tr>
<td align="center" valign="top">7009</td>
<td align="left" valign="top">Type of host variable implementation.</td>
</tr>
<tr>
<td align="center" valign="top">7010</td>
<td align="left" valign="top">Type of processing for the specified
ordering.</td>
</tr>
<tr>
<td align="center" valign="top">7011</td>
<td align="left" valign="top">Name of the index used to satisfy ordering.</td>
</tr>
<tr>
<td align="center" valign="top">7012</td>
<td align="left" valign="top">Library of the index used to satisfy
ordering.</td>
</tr>
<tr>
<td align="center" valign="top">7013</td>
<td align="left" valign="top">Long name of the index used to satisfy
ordering.</td>
</tr>
<tr>
<td align="center" valign="top">7014</td>
<td align="left" valign="top">Long library of the index used to satisfy
ordering.</td>
</tr>
<tr>
<td align="center" valign="top">7020</td>
<td align="left" valign="top">Type of processing for the specified
grouping.</td>
</tr>
<tr>
<td align="center" valign="top">7021</td>
<td align="left" valign="top">Name of the index used to satisfy grouping.</td>
</tr>
<tr>
<td align="center" valign="top">7022</td>
<td align="left" valign="top">Library of the index used to satisfy
grouping.</td>
</tr>
<tr>
<td align="center" valign="top">7023</td>
<td align="left" valign="top">Long name of the index used to satisfy
grouping.</td>
</tr>
<tr>
<td align="center" valign="top">7024</td>
<td align="left" valign="top">Long library of the index used to satisfy
grouping.</td>
</tr>
<tr>
<td align="center" valign="top">7026</td>
<td align="left" valign="top">Query contains UNION.</td>
</tr>
<tr>
<td align="center" valign="top">7027</td>
<td align="left" valign="top">Query contains subquery (subselect).</td>
</tr>
<tr>
<td align="center" valign="top">7030</td>
<td align="left" valign="top">Type of join processing.</td>
</tr>
<tr>
<td align="center" valign="top">7032</td>
<td align="left" valign="top">Query contains distinct.</td>
</tr>
<tr>
<td align="center" valign="top">7034</td>
<td align="left" valign="top">Query contains distributed tables.</td>
</tr>
<tr>
<td align="center" valign="top">7036</td>
<td align="left" valign="top">List of the nodes containing the distributed
tables.</td>
</tr>
<tr>
<td align="center" valign="top">7050</td>
<td align="left" valign="top">Quick summary of the implementation.</td>
</tr>
<tr>
<td align="center" valign="top">8014</td>
<td align="left" valign="top">Memory pool size.</td>
</tr>
<tr>
<td align="center" valign="top">8016</td>
<td align="left" valign="top">Memory pool ID.</td>
</tr>
<tr>
<td align="center" valign="top">8020</td>
<td align="left" valign="top">Date format.</td>
</tr>
<tr>
<td align="center" valign="top">8022</td>
<td align="left" valign="top">Date separator.</td>
</tr>
<tr>
<td align="center" valign="top">8024</td>
<td align="left" valign="top">Time format.</td>
</tr>
<tr>
<td align="center" valign="top">8026</td>
<td align="left" valign="top">Time separator.</td>
</tr>
<tr>
<td align="center" valign="top">8028</td>
<td align="left" valign="top">Decimal point.</td>
</tr>
<tr>
<td align="center" valign="top">8030</td>
<td align="left" valign="top">Name of the sort sequence table associated with
the query.</td>
</tr>
<tr>
<td align="center" valign="top">8032</td>
<td align="left" valign="top">Library of the sort sequence table associated
with the query.</td>
</tr>
<tr>
<td align="center" valign="top">8034</td>
<td align="left" valign="top">Language ID.</td>
</tr>
<tr>
<td align="center" valign="top">8036</td>
<td align="left" valign="top">Country or region ID.</td>
</tr>
<tr>
<td align="center" valign="top">8040</td>
<td align="left" valign="top">Query INI table name.</td>
</tr>
<tr>
<td align="center" valign="top">8042</td>
<td align="left" valign="top">Query INI library.</td>
</tr>
<tr>
<td align="center" valign="top">8044</td>
<td align="left" valign="top">Maximum query time limit.</td>
</tr>
<tr>
<td align="center" valign="top">8046</td>
<td align="left" valign="top">Parallel options.</td>
</tr>
<tr>
<td align="center" valign="top">8048</td>
<td align="left" valign="top">Maximum number of tasks.</td>
</tr>
<tr>
<td align="center" valign="top">8050</td>
<td align="left" valign="top">Apply CHGQRYA options to remote systems.</td>
</tr>
<tr>
<td align="center" valign="top">8052</td>
<td align="left" valign="top">Asynchronous job usage.</td>
</tr>
<tr>
<td align="center" valign="top">8054</td>
<td align="left" valign="top">Join order was forced.</td>
</tr>
<tr>
<td align="center" valign="top">8056</td>
<td align="left" valign="top">Print debug messages.</td>
</tr>
<tr>
<td align="center" valign="top">8060</td>
<td align="left" valign="top">Parameter marker conversion.</td>
</tr>
<tr>
<td align="center" valign="top">8062</td>
<td align="left" valign="top">User defined function (UDF) time limit.</td>
</tr>
<tr>
<td align="center" valign="top">8064</td>
<td align="left" valign="top">Optimizer limitations.</td>
</tr>
</table>
<br>
<h3><a name="error_codes">Error Codes</a></h3>
<p>Possible error codes returned from the Visual Explain consolidator are:</p>
<table width="100%">
<tr>
<th align="center" valign="bottom">Error Code</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="center" valign="top" width="15%">0</td>
<td align="left" valign="top" width="85%">Successful.</td>
</tr>
<tr>
<td align="center" valign="top">71</td>
<td align="left" valign="top">Invalid date format.</td>
</tr>
<tr>
<td align="center" valign="top">72</td>
<td align="left" valign="top">Invalid date separator.</td>
</tr>
<tr>
<td align="center" valign="top">73</td>
<td align="left" valign="top">Invalid time format.</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="left" valign="top">Invalid time separator.</td>
</tr>
<tr>
<td align="center" valign="top">75</td>
<td align="left" valign="top">Invalid decimal point.</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="left" valign="top">No records in the specified database monitor
table.</td>
</tr>
<tr>
<td align="center" valign="top">91</td>
<td align="left" valign="top">Failure trying to read records from specified
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">92</td>
<td align="left" valign="top">Query too complex to be explained.</td>
</tr>
<tr>
<td align="center" valign="top">93</td>
<td align="left" valign="top">Specified database monitor table not found.</td>
</tr>
<tr>
<td align="center" valign="top">99</td>
<td align="left" valign="top">Query function not supported.</td>
</tr>
<tr>
<td align="center" valign="top">1000</td>
<td align="left" valign="top">Missing or invalid QQQ1000 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3000</td>
<td align="left" valign="top">Missing or invalid QQQ3000 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3001</td>
<td align="left" valign="top">Missing or invalid QQQ3001 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3002</td>
<td align="left" valign="top">Missing or invalid QQQ3002 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3003</td>
<td align="left" valign="top">Missing or invalid QQQ3003 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3004</td>
<td align="left" valign="top">Missing or invalid QQQ3004 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3014</td>
<td align="left" valign="top">Missing or invalid QQQ3014 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3021</td>
<td align="left" valign="top">Missing or invalid QQQ3021 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3022</td>
<td align="left" valign="top">Missing or invalid QQQ3022 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3023</td>
<td align="left" valign="top">Missing or invalid QQQ3023 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3025</td>
<td align="left" valign="top">Missing or invalid QQQ3025 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3027</td>
<td align="left" valign="top">Missing or invalid QQQ3027 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">3028</td>
<td align="left" valign="top">Missing or invalid QQQ3028 record within the
database monitor table.</td>
</tr>
<tr>
<td align="center" valign="top">0nnn</td>
<td align="left" valign="top">SQL error code (converted to a positive value)
that occurred while reading records from the specified database monitor
table.</td>
</tr>
</table>
<br>
<hr>
API introduced: V5R1
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"file1.htm">Database and File APIs</a> | <a href="aplist.htm">APIs by
category</a></td>
</tr>
</table>
</center>
<br>
</body>
</html>