ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzajq_5.4.0.1/rzajqslistprobe.htm

141 lines
8.7 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="reference" />
<meta name="DC.Title" content="Sorted list probe" />
<meta name="abstract" content="A sorted list probe operation is used to retrieve rows from a temporary sorted list based upon a probe lookup operation." />
<meta name="description" content="A sorted list probe operation is used to retrieve rows from a temporary sorted list based upon a probe lookup operation." />
<meta name="DC.subject" content="definitions, sorted list probe access method, temporary sorted list, probe access method, sorted list probe, access method" />
<meta name="keywords" content="definitions, sorted list probe access method, temporary sorted list, probe access method, sorted list probe, access method" />
<meta name="DC.Relation" scheme="URI" content="rzajqtempslist.htm" />
<meta name="DC.Relation" scheme="URI" content="c23nl.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="rzajqslistprobe" />
<meta name="DC.Language" content="en-us" />
<!-- 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. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Sorted list probe</title>
</head>
<body id="rzajqslistprobe"><a name="rzajqslistprobe"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Sorted list probe</h1>
<div><p>A sorted list probe operation is used to retrieve rows from a temporary
sorted list based upon a probe lookup operation.</p>
<div class="section"><p>The optimizer initially identifies the keys of the temporary sorted
list from the join criteria specified in the query. This is done so that
when the sorted list probe is performed, the values used to probe into the
temporary sorted list will be extracted from the join-from criteria specified
in the selection. Those values will be used to position within the sorted
list in order to determine if any rows have a matching value. All of the matching
join rows are then returned to be further processed by the query.</p>
</div>
<div class="section">
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="border" border="1" rules="all"><caption>Table 1. Sorted list probe attributes</caption><thead align="left"><tr><th valign="top" width="30.96446700507614%" id="d0e44">Data access method</th>
<th valign="top" width="69.03553299492386%" id="d0e46">Sorted list probe</th>
</tr>
</thead>
<tbody><tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Description</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 ">The temporary sorted list is quickly probed based upon
the join criteria. </td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Advantages</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 "><ul><li>Provides very quick access to the selected rows that match probe criteria</li>
<li>Reduces the random I/O to the table generally associated with longer running
queries that otherwise use an index to collate the data </li>
<li>Selection can be performed before generating the sorted list
to subset the number of rows in the temporary object</li>
</ul>
</td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Considerations</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 ">Generally used to process non-equal join criteria. Can
perform poorly when the entire sorted list does not stay resident in memory
as it is being populated and processed.</td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Likely to be used</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 "><ul><li>When the use of temporary results is allowed by the query environmental
parameter (ALWCPYDTA)</li>
<li>When the data is required to be collated based upon a column or columns
for join processing</li>
<li>The join criteria was specified using a non-equals operator</li>
</ul>
</td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Example SQL statement</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 "><pre>SELECT * FROM Employee XXX, Department YYY
WHERE XXX.WorkDept &gt; YYY.DeptNbr
OPTIMIZE FOR ALL ROWS</pre>
</td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Messages indicating use</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 ">There are multiple ways in which a sorted list probe
can be indicated through the messages. The messages in this example illustrate
how the SQL Query Engine will indicate a sorted list probe was used. <ul><li>Optimizer Debug: <pre>CPI4327 -- File EMPLOYEE processed in join position 1.
CPI4327 -- File DEPARTMENT processed in join
position 2. </pre>
</li>
<li>PRTSQLINF: <pre>SQL4007 -- Query implementation for join
position 1 table 1.
SQL4010 -- Table scan access for table 1.
SQL4007 -- Query implementation for join
position 2 table 2.
SQL4010 -- Table scan access for table 2. </pre>
</li>
</ul>
</td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>SMP parallel enabled</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 ">Yes</td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Also referred to as</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 ">Sorted List Probe, Preload <p>Sorted List Probe Distinct</p>
<p>Sorted
List Probe Distinct, Preload</p>
</td>
</tr>
<tr><td valign="top" width="30.96446700507614%" headers="d0e44 "><strong>Visual Explain icon</strong></td>
<td valign="top" width="69.03553299492386%" headers="d0e46 "><br /><img src="rzajq520.gif" alt="Sorted list probe icon" /><br /></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section"><p>The sorted list probe access method is generally considered when
determining the implementation for a secondary table of a join. The sorted
list is created with the key columns that match the non-equal join criteria
for the underlying table. The sorted list probe allows the optimizer to choose
the most efficient implementation to select the rows from the underlying table
without regard for any join criteria. This single pass through the underlying
table can now choose to perform a Table Scan or use an existing index to select
the rows needed for the sorted list population.</p>
</div>
<div class="section"><p>Since sorted lists are constructed so that the majority of the
temporary object will remain resident within main memory, the I/O associated
with a sorted list is minimal. Additionally, if the sorted list was populated
with all necessary columns from the table, no additional Table Probe will
be required in order to finish processing this table, once again causing further
I/O savings.</p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzajqtempslist.htm" title="The temporary sorted list is a temporary object that allows the optimizer to sequence rows based upon a column or set of columns. The sorted list can be either scanned or probed by the optimizer to satisfy different operations of the query.">Temporary sorted list</a></div>
</div>
<div class="relconcepts"><strong>Related concepts</strong><br />
<div><a href="c23nl.htm" title="DB2 Universal Database for iSeries provides a nested loop join method. For this method, the processing of the tables in the join are ordered. This order is called the join order. The first table in the final join order is called the primary table. The other tables are called secondary tables. Each join table position is called a dial.">Nested loop join implementation</a></div>
</div>
</div>
</body>
</html>