<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><!-- InstanceBegin template="../../Templates/DocTemp.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Partitioning - Step 1 - Analysis</title>
<!-- InstanceEndEditable --> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../docs.css" rel="stylesheet" type="text/css">
<script language="JavaScript1.2" src="../../docs.js"></script>
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
</head>

<body>
<table width="100%" class="lightblue" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><a href="http://www.omnidex.com"><img src="../../images/flatlogo.gif" width="95" height="25" hspace="3" vspace="3" border="0"></a></td>
    <td><img src="../../images/omnidex.gif" width="109" height="25" hspace="3" vspace="3"></td>
    <td align="right" valign="top"><p class="banner"><a href="../../Contents.htm">Contents</a> 
        | <a href="../../Quick%20Links.htm">Quick Links</a></p></td>
  </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="175" class="bar"><p class="banner">&nbsp;</p></td>
    <td align="right" class="bar"> <!-- InstanceBeginEditable name="Section Title" -->
      <h1>Partitioning</h1>
      <!-- InstanceEndEditable --></td>
  </tr>
  <tr> 
    <td width="175" class="left1 lightblue"><img src="../../images/blank.gif" width="10" height="20"> 
    </td>
    <td valign="top" class="left1 lightblue">&nbsp; </td>
  </tr>
  <tr> 
    <td width="175" valign="top" class="left"><!-- InstanceBeginEditable name="leftnav" -->
      <p><a href="Partitioning.htm">Partitioning</a></p>
      <p><a href="Partitioning.htm#limits"><img src="../../images/blank.gif" width="15" height="10" border="0">Limitations</a></p>
      <p><a href="Partitioning.htm#updates"><img src="../../images/blank.gif" width="15" height="10" border="0">Data Updates</a></p>
      <p><a href="Analysis.htm">1. Analysis</a></p>
      <p><a href="Partition%20the%20Table.htm">2. Partition the Table</a></p>
      <p> <a href="Environment%20File.htm">3. Environment File Entry</a></p>
      <p><a href="Indexing.htm">4. Indexing</a></p>
      <p><a href="Example1.htm">Examples</a></p>
      <!-- InstanceEndEditable --></td>
    <td valign="top" class="content"> <!-- InstanceBeginEditable name="Content" --> 
      <h2 class="line">Step 1 - Analysis</h2>
      <p>The first and most important step in partitioning a table is analysis 
        to determine if the table should be partitioned, and if so, how. Analyze 
        the queries that will run against the partitioned table to check for SQL 
        limitations and to determine the best partitioning approach.</p>
      <ul>
        <li>Choosing which field to partition the data on is critical. At least 
          half of all queries against the partitioned table should apply critieria 
          to one particular field, the <a href="#pq">partition qualifier</a>. 
          This might be a state, a year or a department field, or some other &quot;group&quot; 
          field.<br>
          Running queries against a partitioned table that do not apply criteria 
          to the partition qualifier field, will search every partition, negating 
          the performance benefit.</li>
        <li>The size of each partition should be fairly consistent. For example, 
          if an orders table is partitioned on the status field with the values 
          PENDING, SHIPPED, CANCELED, BACKORDERED, the &quot;SHIPPED&quot; partition 
          will be considerably larger than the other three partitions, causing 
          a potentially severe fluctuation in performance depending on which partition 
          is hit. <br>
          To keep size consistent, consider grouping unique values together. For 
          example, when partitioning on a state field, the states of California 
          and New York will likely have more records that the states of Nebraska, 
          Wyoming, and Montana. While California and New York can each have their 
          own partitions, Nebraska, Wyoming and Montana can be grouped into a 
          single partition. </li>
        <li>In the Omnidex environment file, the partition qualifier must be specified 
          with a PARTITIONED BY clause (see Step 3). If omitted, every query against 
          the partitioned table will search every partition, negating any performance 
          gains that may have been achieved. <br>
          Likewise, all queries searching against the partitioned table must include 
          the partition qualifier in a WHERE clause predicate, or every partition 
          will be searched, again negating the performance gains. However, multiple 
          partition qualifiers can be included in the same WHERE clause predicate, 
          without degrading performance.<br>
          <span class="ex">SELECT ... FROM table WHERE state IN ('CO','CA','FL','TX)</span> 
          <br>
          This statement will search only in partitions where the PARTITIONED 
          BY clause includes one or more of these states. Other partitions will 
          be ignored.</li>
        <li>Although the number of partitions is not explicitly limited, DISC 
          recommends the number of partitions be limited to between 8 and 16 partitions, 
          depending on the amount of data. Too many partitions could hinder performance.</li>
      </ul>
      <p>The Omnidex utility, ODXSQL, can assist in determining the best partitioning 
        approach by simulating the partition in a variety of ways and generating 
        a report detailing exactly how the data would be partitioned. When you've 
        completed your analysis, ODXSQL can then physically partition the table 
        for you and generate the necessary environment file entries to represent 
        the new partitions. See <a href="Partition%20the%20Table.htm">Step 2 - 
        Partition the Table</a>, for more information on using the ODXSQL PARTITION 
        command. </p>
      <p class="line">&nbsp;</p>
      <h3><a name="pq"></a>Partition Qualifier</h3>
      <p>A partition qualifier is the value on which the partition will be based. 
        For example, if the table is partitioned by state, the partition qualifier 
        for each partition will be the state or states stored in that particular 
        partition.</p>
      <p>The partition qualifier field should be a reasonably low-cardinality 
        field, meaning the number of unique values in that field for each partition 
        should be low.</p>
      <p>The field used for the partition qualifier must be a reasonbly low cardinality 
        field. When the partitions are created, each individual partition should 
        have no more than 256 unique values in the partition qualifier field. 
        This is important for performance.</p>
      <p>For example, partitioning a customers table based on social security 
        number is not very efficient because every social security number is unique. 
        A social security number field has very high cardinality. However, partitioning 
        the same table based on state makes more sense since there are only 50 
        states.</p>
      <h3>&nbsp;</h3>
      <!-- InstanceEndEditable --><P align="right"><a href="#">Top</a> </P>
	  </td>
  </tr>
  <tr>
    <td width="175" class="bbar">
<p>&nbsp;</p></td>
    <td align="right" valign="middle" class="bbar"> <p class="banner">Omnidex 
        Version 4.1 Build 1 - E10.04 - Dynamic Information Systems Corporation 
        - Copyright &copy; 2004</p></td>
  </tr>
</table>
<div class="menu0" id="m1" onMouseOver="changeClass('menu1','m1'); changeVisibility('visible','s1');" onMouseOut="changeClass('menu0','m1'); changeVisibility('hidden','s1');"> 
  <a href="../../index.htm">Home</a></div>      
<div class="menu0" id="m2" onMouseOver="changeClass('menu1','m2'); changeVisibility('visible','s2');" onMouseOut="changeClass('menu0','m2'); changeVisibility('hidden','s2');"> 
  <a href="../../Omnidex%20Concepts/Omnidex%20Overview.htm">Omnidex</a></div>      
<div class="menu0" id="m3" onMouseOver="changeClass('menu1','m3'); changeVisibility('visible','s3');" onMouseOut="changeClass('menu0','m3'); changeVisibility('hidden','s3');"> 
  <a href="../../Getting%20Started/Getting%20Started.htm">Getting Started </a></div>      
<div class="menu0" id="m4" onMouseOver="changeClass('menu1','m4'); changeVisibility('visible','s4');" onMouseOut="changeClass('menu0','m4'); changeVisibility('hidden','s4');"> 
  <a href="../../Development/Development.htm">Development</a></div>      
<div class="menu0" id="m5" onMouseOver="changeClass('menu1','m5'); changeVisibility('visible','s5');" onMouseOut="changeClass('menu0','m5'); changeVisibility('hidden','s5');"> 
  <a href="../../Utilities/Utilities.htm">Utilities</a></div>      
<div class="menu0" id="m6" onMouseOver="changeClass('menu1','m6'); changeVisibility('visible','s6');" onMouseOut="changeClass('menu0','m6'); changeVisibility('hidden','s6');"> 
  <a href="../../Appendix/Appendix.htm">Appendix</a></div>
    <td>&nbsp;</td>
  </tr>
</table> 
<table id="s1" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m1'); changeVisibility('visible','s1');" onMouseOut="changeClass('menu0','m1'); changeVisibility('hidden','s1');">
  <tr> 
    <td id="s11" class="menu1" onMouseOver="changeClass('menu0','s11');" onMouseOut="changeClass('menu1','s11');"><a href="../../Whats%20New.htm">What's 
      New!</a></td>
  </tr>
  <tr> 
    <td id="s12" class="menu1" onMouseOver="changeClass('menu0','s12');" onMouseOut="changeClass('menu1','s12');"><a href="../../Quick%20Links.htm">Quick 
      Links</a></td>
  </tr>
  <tr> 
    <td id="s13" class="menu1" onMouseOver="changeClass('menu0','s13');" onMouseOut="changeClass('menu1','s13');"><a href="../../Contents.htm">Contents</a></td>
  </tr>
</table>
<table id="s2" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m2'); changeVisibility('visible','s2');" onMouseOut="changeClass('menu0','m2'); changeVisibility('hidden','s2');">
  <tr> 
    <td id="s21" class="menu1" onMouseOver="changeClass('menu0','s21');" onMouseOut="changeClass('menu1','s21');"><a href="../../Omnidex%20Concepts/Features/Features.htm">Features</a></td>
  </tr>
  <tr> 
    <td id="s22" class="menu1" onMouseOver="changeClass('menu0','s22');" onMouseOut="changeClass('menu1','s22');"><a href="../../Omnidex%20Concepts/Indexing%20Strategies/Indexing%20Strategies.htm">Indexing 
      Strategies</a></td>
  </tr>
  <tr> 
    <td id="s23" class="menu1" onMouseOver="changeClass('menu0','s23');" onMouseOut="changeClass('menu1','s23');"><a href="../../Omnidex%20Concepts/Indexing%20Options/Indexing%20Options.htm">Indexing 
      Options </a></td>
  </tr>
  <tr> 
    <td id="s24" class="menu1" onMouseOver="changeClass('menu0','s24');" onMouseOut="changeClass('menu1','s24');"><a href="../../Omnidex%20Concepts/Index%20Maintenance/Index%20Maintenance.htm">Index 
      Maintenance </a></td>
  </tr>
  <tr> 
    <td id="s25" class="menu1" onMouseOver="changeClass('menu0','s25');" onMouseOut="changeClass('menu1','s25');"><a href="../../Omnidex%20Concepts/Partitioning/Partitioning.htm">Optimization</a></td>
  </tr>
  <tr> 
    <td id="s26" class="menu1" onMouseOver="changeClass('menu0','s26');" onMouseOut="changeClass('menu1','s26');"><a href="../../Omnidex%20Concepts/Index%20Maintenance/Index%20Maintenance.htm">Partitioning</a></td>
  </tr>
  <tr> 
    <td id="s27" class="menu1" onMouseOver="changeClass('menu0','s27');" onMouseOut="changeClass('menu1','s27');"><a href="../../Omnidex%20Concepts/Text/Omnidex%20Text.htm">Omnidex Text</a></td>
  </tr>
</table>
<table id="s3" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m3'); changeVisibility('visible','s3');" onMouseOut="changeClass('menu0','m3'); changeVisibility('hidden','s3');">
  <tr> 
    <td id="s31" class="menu1" onMouseOver="changeClass('menu0','s31');" onMouseOut="changeClass('menu1','s31');"><a href="../../Getting%20Started/1%20-%20Installation%20and%20Setup.htm">Server 
      Setup Guides</a></td>
  </tr>
  <tr> 
    <td id="s32" class="menu1" onMouseOver="changeClass('menu0','s32');" onMouseOut="changeClass('menu1','s32');"><a href="../../Getting%20Started/Omnidex%20Client/Windows%20Client.htm">Windows 
      Client</a></td>
  </tr>
  <tr> 
    <td id="s33" class="menu1" onMouseOver="changeClass('menu0','s33');" onMouseOut="changeClass('menu1','s33');"><a href="../../Database%20Platforms/Supported%20Database%20Platforms.htm">Database 
      Platforms </a></td>
  </tr>
  <tr> 
    <td id="s34" class="menu1" onMouseOver="changeClass('menu0','s34');" onMouseOut="changeClass('menu1','s34');"><a href="../../Environment%20Catalog/Environment%20Catalog.htm">Environment 
      Catalog</a> </td>
  </tr>
</table>
<table id="s4" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m4'); changeVisibility('visible','s4');" onMouseOut="changeClass('menu0','m4'); changeVisibility('hidden','s4');">
  <tr> 
    <td id="s41" class="menu1" onMouseOver="changeClass('menu0','s41');" onMouseOut="changeClass('menu1','s41');"><a href="../../SQL%20Reference/SQL%20Reference.htm">SQL 
      Reference</a> </td>
  </tr>
  <tr> 
    <td id="s42" class="menu1" onMouseOver="changeClass('menu0','s42');" onMouseOut="changeClass('menu1','s42');"><a href="../../Development/ODBC/ODBC.htm">ODBC</a></td>
  </tr>
  <tr> 
    <td id="s43" class="menu1" onMouseOver="changeClass('menu0','s43');" onMouseOut="changeClass('menu1','s43');"><a href="../../Development/JDBC/JDBC.htm">JDBC</a></td>
  </tr>
  <tr> 
    <td id="s44" class="menu1" onMouseOver="changeClass('menu0','s44');" onMouseOut="changeClass('menu1','s44');"><a href="../../Development/OmniAccess%20API/OmniAccess%20API.htm">OmniAccess 
      API</a></td>
  </tr>
  <tr> 
    <td id="s45" class="menu1" onMouseOver="changeClass('menu0','s45');" onMouseOut="changeClass('menu1','s45');"><a href="../../Development/Debugging/OMNIDEX_DEBUG.htm">Debugging</a></td>
  </tr>
</table>
<table id="s5" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m5'); changeVisibility('visible','s5');" onMouseOut="changeClass('menu0','m5'); changeVisibility('hidden','s5');">
  <tr> 
    <td id="s51" class="menu1" onMouseOver="changeClass('menu0','s51');" onMouseOut="changeClass('menu1','s51');"><A href="../../Utilities/DBINSTAL/DBINSTAL.htm">DBINSTAL</A></td>
  </tr>
  <tr> 
    <td id="s52" class="menu1" onMouseOver="changeClass('menu0','s52');" onMouseOut="changeClass('menu1','s52');"><a href="../../Utilities/DSEDIT/DSEDIT.htm">DSEDIT</a></td>
  </tr>
  <tr> 
    <td id="s53" class="menu1" onMouseOver="changeClass('menu0','s53');" onMouseOut="changeClass('menu1','s53');"><a href="../../Utilities/NSADMIN/NSADMIN.htm">NSADMIN</a></td>
  </tr>
  <tr> 
    <td id="s54" class="menu1" onMouseOver="changeClass('menu0','s54');" onMouseOut="changeClass('menu1','s54');"><a href="../../Utilities/OACOMP/OACOMP.htm">OACOMP</a></td>
  </tr>
  <tr> 
    <td id="s55" class="menu1" onMouseOver="changeClass('menu0','s55');" onMouseOut="changeClass('menu1','s55');"><a href="../../Utilities/OADECOMP/OADECOMP.htm">OADECOMP</a></td>
  </tr>
  <tr> 
    <td id="s56" class="menu1" onMouseOver="changeClass('menu0','s56');" onMouseOut="changeClass('menu1','s56');"><a href="../../Utilities/OAHELPER/OAHELPER.htm">OAHELPER</a></td>
  </tr>
  <tr> 
    <td id="s57" class="menu1" onMouseOver="changeClass('menu0','s57');" onMouseOut="changeClass('menu1','s57');"><A href="../../Utilities/ODXAIM/ODXAIM.htm">ODXAIM</A></td>
  </tr>
  <tr> 
    <td id="s58" class="menu1" onMouseOver="changeClass('menu0','s58');" onMouseOut="changeClass('menu1','s58');"><a href="../../Utilities/ODXMAKE/ODXMAKE.htm">ODXMAKE</a></td>
  </tr>
  <tr> 
    <td id="s59" class="menu1" onMouseOver="changeClass('menu0','s59');" onMouseOut="changeClass('menu1','s59');"><a href="../../Utilities/ODXNET/ODXNET.htm">ODXNET</a></td>
  </tr>
  <tr> 
    <td id="s510" class="menu1" onMouseOver="changeClass('menu0','s510');" onMouseOut="changeClass('menu1','s510');"><A href="../../Utilities/ODXQUERY/ODXQUERY.htm">ODXQUERY</A></td>
  </tr>
  <tr> 
    <td id="s511" class="menu1" onMouseOver="changeClass('menu0','s511');" onMouseOut="changeClass('menu1','s511');"><a href="../../Utilities/ODXSQL/ODXSQL.htm">ODXSQL</a></td>
  </tr>
  <tr> 
    <td id="s512" class="menu1" onMouseOver="changeClass('menu0','s512');" onMouseOut="changeClass('menu1','s512');"><a href="../../Utilities/REGMAINT/REGMAINT.htm">REGMAINT</a></td>
  </tr>
  <tr> 
    <td id="s513" class="menu1" onMouseOver="changeClass('menu0','s513');" onMouseOut="changeClass('menu1','s513');"><A href="../../Utilities/REGTEST/REGTEST.htm">REGTEST</A></td>
  </tr>
  <tr> 
    <td id="s514" class="menu1" onMouseOver="changeClass('menu0','s514');" onMouseOut="changeClass('menu1','s514');"><a href="../../Utilities/SNOWGEN/SNOWGEN.htm">SNOWGEN</a></td>
  </tr>
  <tr> 
    <td id="s515" class="menu1" onMouseOver="changeClass('menu0','s515');" onMouseOut="changeClass('menu1','s515');"><a href="../../Utilities/SYSINFO/SYSINFO.htm">SYSINFO</a></td>
  </tr>
  <tr> 
    <td id="s516" class="menu1" onMouseOver="changeClass('menu0','s516');" onMouseOut="changeClass('menu1','s516');"><a href="../../Utilities/VERSIONS/VERSIONS.htm">VERSIONS</a></td>
  </tr>
  <tr> 
    <td id="s517" class="menu1" onMouseOver="changeClass('menu0','s517');" onMouseOut="changeClass('menu1','s517');"><a href="../../Utilities/VIEWGEN/VIEWGEN.htm">VIEWGEN</a></td>
  </tr>
</table>
<table id="s6" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m6'); changeVisibility('visible','s6');" onMouseOut="changeClass('menu0','m6'); changeVisibility('hidden','s6');">
  <tr> 
    <td id="s61" class="menu1" onMouseOver="changeClass('menu0','s61');" onMouseOut="changeClass('menu1','s61');"><a href="../../Appendix/Cardinality.htm">Cardinality</a></td>
  </tr>
  <tr> 
    <td id="s62" class="menu1" onMouseOver="changeClass('menu0','s62');" onMouseOut="changeClass('menu1','s62');"><a href="../../Appendix/Date%20Formats.htm">Date 
      Formats </a></td>
  </tr>
  <tr> 
    <td id="s63" class="menu1" onMouseOver="changeClass('menu0','s63');" onMouseOut="changeClass('menu1','s63');"><a href="../../Appendix/Environment%20Variables.htm">Environment 
      Variables </a></td>
  </tr>
  <tr> 
    <td id="s64" class="menu1" onMouseOver="changeClass('menu0','s64');" onMouseOut="changeClass('menu1','s64');"><a href="../../Appendix/File%20Name%20Handling.htm">File 
      Name Handling</a></td>
  </tr>
  <tr> 
    <td id="s65" class="menu1" onMouseOver="changeClass('menu0','s65');" onMouseOut="changeClass('menu1','s65');"><a href="../../Appendix/Glossary%20A.htm">Glossary</a></td>
  </tr>
  <tr> 
    <td id="s66" class="menu1" onMouseOver="changeClass('menu0','s66');" onMouseOut="changeClass('menu1','s66');"><a href="../../Appendix/Null.htm">Null</a></td>
  </tr>
  <tr> 
    <td id="s67" class="menu1" onMouseOver="changeClass('menu0','s67');" onMouseOut="changeClass('menu1','s67');"><a href="../../Appendix/OAGLOBAL.htm">OAGLOBAL</a></td>
  </tr>
  <tr> 
    <td id="s68" class="menu1" onMouseOver="changeClass('menu0','s68');" onMouseOut="changeClass('menu1','s68');"><a href="../../Appendix/Operating%20Limits.htm">Operating 
      Limits</a></td>
  </tr>
  <tr> 
    <td id="s69" class="menu1" onMouseOver="changeClass('menu0','s69');" onMouseOut="changeClass('menu1','s69');"><a href="../../Appendix/Provided%20Managed%20Synonym%20Lists.htm">Managed 
      Synonym Lists</a></td>
  </tr>
  <tr> 
    <td id="s70" class="menu1" onMouseOver="changeClass('menu0','s70');" onMouseOut="changeClass('menu1','s70');"><a href="../../Appendix/Reserved%20Words.htm">Reserved 
      Words</a></td>
  </tr>
  <tr> 
    <td id="s71" class="menu1" onMouseOver="changeClass('menu0','s71');" onMouseOut="changeClass('menu1','s71');"><a href="../../Appendix/Supported%20Datatypes.htm">Supported 
      Data Types</a></td>
  </tr>
</table>
<p>&nbsp;</p>
</body>
<!-- InstanceEnd --></html>
