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

71 lines
4.8 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<?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="Avoid numeric conversions" />
<meta name="abstract" content="When a column value and a host variable (or constant value) are being compared, try to specify the same data types and attributes. DB2 Universal Database for iSeries does not use an index for the named column if the host variable or constant value has a greater precision than the precision of the column. If the two items being compared have different data types, DB2 Universal Database for iSeries will need to convert one or the other of the values, which can result in inaccuracies (because of limited machine precision)." />
<meta name="description" content="When a column value and a host variable (or constant value) are being compared, try to specify the same data types and attributes. DB2 Universal Database for iSeries does not use an index for the named column if the host variable or constant value has a greater precision than the precision of the column. If the two items being compared have different data types, DB2 Universal Database for iSeries will need to convert one or the other of the values, which can result in inaccuracies (because of limited machine precision)." />
<meta name="DC.Relation" scheme="URI" content="rzajqeffectindex.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="avoidnumconv" />
<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>Avoid numeric conversions</title>
</head>
<body id="avoidnumconv"><a name="avoidnumconv"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Avoid numeric conversions</h1>
<div><p>When a column value and a host variable (or constant value) are
being compared, try to specify the same data types and attributes. <span class="keyword">DB2 Universal Database™ for iSeries™</span> does not use an index for
the named column if the host variable or constant value has a greater precision
than the precision of the column. If the two items being compared have different
data types, <span class="keyword">DB2 Universal Database for iSeries</span> will
need to convert one or the other of the values, which can result in inaccuracies
(because of limited machine precision).</p>
<div class="section"><p>To avoid problems for columns and constants being compared, use
the following: </p>
<ul><li>same data type</li>
<li>same scale, if applicable</li>
<li>same precision, if applicable</li>
</ul>
<p>For example, EDUCLVL is a halfword integer value (SMALLINT).
When using SQL, specify:</p>
<pre><strong>WHERE</strong> EDUCLVL &lt; 11 <strong>AND</strong>
EDUCLVL &gt;= 2</pre>
</div>
<div class="section"><p>instead of </p>
<pre><strong>WHERE</strong> EDUCLVL &lt; 1.1E1 <strong>AND</strong>
EDUCLVL &gt; 1.3</pre>
</div>
<div class="section"><p>When using the OPNQRYF command, specify: </p>
<pre>... QRYSLT('EDUCLVL *LT 11 *AND ENUCLVL *GE 2')</pre>
<p>instead
of </p>
<pre>... QRYSLT('EDUCLVL *LT 1.1E1 *AND EDUCLVL *GT 1.3')</pre>
</div>
<div class="section"><p>If an index was created over the EDUCLVL column, then the optimizer
does not use the index in the second example because the precision of the
constant is greater than the precision of the column. In the first example,
the optimizer considers using the index, because the precisions are equal.</p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzajqeffectindex.htm" title="The following topics provide suggestions that will help you to design code which allows DB2 Universal Database for iSeries to take advantage of available indexes:">Coding for effective indexes</a></div>
</div>
</div>
</body>
</html>