forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
400 lines
50 KiB
HTML
400 lines
50 KiB
HTML
<a name="EN-US_TOPIC_0000001233563159"></a><a name="EN-US_TOPIC_0000001233563159"></a>
|
|
|
|
<h1 class="topictitle1">Optimizing Statistics</h1>
|
|
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001233563159__sc845b24ebeb84df7acace559ba5abdf0"><h4 class="sectiontitle">What Is Statistic Optimization</h4><p id="EN-US_TOPIC_0000001233563159__a57288c7e28cb448592068f097abeee17"><span id="EN-US_TOPIC_0000001233563159__text904630338">GaussDB(DWS)</span> generates optimal execution plans based on the cost estimation. Optimizers need to estimate the number of data rows and the cost based on statistics collected using <strong id="EN-US_TOPIC_0000001233563159__b842352706115912">ANALYZE</strong>. Therefore, the statistics is vital for the estimation of the number of rows and cost. Global statistics are collected using <strong id="EN-US_TOPIC_0000001233563159__b84235270614359">ANALYZE</strong>: <strong id="EN-US_TOPIC_0000001233563159__b84235270614450">relpages</strong> and <strong id="EN-US_TOPIC_0000001233563159__b84235270614454">reltuples</strong> in the <strong id="EN-US_TOPIC_0000001233563159__b84235270614447">pg_class</strong> table; <strong id="EN-US_TOPIC_0000001233563159__b84235270614614">stadistinct</strong>, <strong id="EN-US_TOPIC_0000001233563159__b84235270614618">stanullfrac</strong>, <strong id="EN-US_TOPIC_0000001233563159__b84235270614623">stanumbersN</strong>, <strong id="EN-US_TOPIC_0000001233563159__b84235270614627">stavaluesN</strong>, and <strong id="EN-US_TOPIC_0000001233563159__b4311412914716">histogram_bounds</strong> in the <strong id="EN-US_TOPIC_0000001233563159__b39562502414711">pg_statistic</strong> table.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233563159__s18aa332df64b45669fa242aa0694c7c4"><h4 class="sectiontitle">Example 1: Poor Query Performance Due to the Lack of Statistics</h4><p id="EN-US_TOPIC_0000001233563159__a01318fdcd25e451cab1941f522c74ab0">In most cases, the lack of statistics in tables or columns involved in the query greatly affects the query performance.</p>
|
|
<p id="EN-US_TOPIC_0000001233563159__a1cf228c8875244dc849ca8ef4aea6393">The table structure is as follows:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233563159__sb162cddbb7a444aca47f0631296d77b5"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span>
|
|
<span class="normal">24</span>
|
|
<span class="normal">25</span>
|
|
<span class="normal">26</span>
|
|
<span class="normal">27</span>
|
|
<span class="normal">28</span>
|
|
<span class="normal">29</span>
|
|
<span class="normal">30</span>
|
|
<span class="normal">31</span>
|
|
<span class="normal">32</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">LINEITEM</span>
|
|
<span class="p">(</span>
|
|
<span class="n">L_ORDERKEY</span><span class="w"> </span><span class="nb">BIGINT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_PARTKEY</span><span class="w"> </span><span class="nb">BIGINT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_SUPPKEY</span><span class="w"> </span><span class="nb">BIGINT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_LINENUMBER</span><span class="w"> </span><span class="nb">BIGINT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_QUANTITY</span><span class="w"> </span><span class="nb">DECIMAL</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_EXTENDEDPRICE</span><span class="w"> </span><span class="nb">DECIMAL</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_DISCOUNT</span><span class="w"> </span><span class="nb">DECIMAL</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_TAX</span><span class="w"> </span><span class="nb">DECIMAL</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_RETURNFLAG</span><span class="w"> </span><span class="nb">CHAR</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_LINESTATUS</span><span class="w"> </span><span class="nb">CHAR</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_SHIPDATE</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_COMMITDATE</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_RECEIPTDATE</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_SHIPINSTRUCT</span><span class="w"> </span><span class="nb">CHAR</span><span class="p">(</span><span class="mi">25</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_SHIPMODE</span><span class="w"> </span><span class="nb">CHAR</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">L_COMMENT</span><span class="w"> </span><span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">44</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">)</span><span class="w"> </span><span class="k">with</span><span class="w"> </span><span class="p">(</span><span class="n">orientation</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">column</span><span class="p">,</span><span class="w"> </span><span class="n">COMPRESSION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MIDDLE</span><span class="p">)</span><span class="w"> </span><span class="n">distribute</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">hash</span><span class="p">(</span><span class="n">L_ORDERKEY</span><span class="p">);</span>
|
|
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">ORDERS</span>
|
|
<span class="p">(</span>
|
|
<span class="n">O_ORDERKEY</span><span class="w"> </span><span class="nb">BIGINT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_CUSTKEY</span><span class="w"> </span><span class="nb">BIGINT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_ORDERSTATUS</span><span class="w"> </span><span class="nb">CHAR</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_TOTALPRICE</span><span class="w"> </span><span class="nb">DECIMAL</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_ORDERDATE</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_ORDERPRIORITY</span><span class="w"> </span><span class="nb">CHAR</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_CLERK</span><span class="w"> </span><span class="nb">CHAR</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_SHIPPRIORITY</span><span class="w"> </span><span class="nb">BIGINT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">,</span><span class="w"> </span><span class="n">O_COMMENT</span><span class="w"> </span><span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">79</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span>
|
|
<span class="p">)</span><span class="k">with</span><span class="w"> </span><span class="p">(</span><span class="n">orientation</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">column</span><span class="p">,</span><span class="w"> </span><span class="n">COMPRESSION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MIDDLE</span><span class="p">)</span><span class="w"> </span><span class="n">distribute</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">hash</span><span class="p">(</span><span class="n">O_ORDERKEY</span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233563159__a231aca831c8e47eaae0174c7695e1298">The query statements are as follows:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233563159__s9ba28aaa870345af8fd79551680013ab"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">explain</span><span class="w"> </span><span class="k">verbose</span><span class="w"> </span><span class="k">select</span>
|
|
<span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">numwait</span><span class="w"> </span>
|
|
<span class="k">from</span>
|
|
<span class="n">lineitem</span><span class="w"> </span><span class="n">l1</span><span class="p">,</span>
|
|
<span class="n">orders</span><span class="w"> </span>
|
|
<span class="k">where</span>
|
|
<span class="n">o_orderkey</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">l1</span><span class="p">.</span><span class="n">l_orderkey</span>
|
|
<span class="k">and</span><span class="w"> </span><span class="n">o_orderstatus</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'F'</span>
|
|
<span class="k">and</span><span class="w"> </span><span class="n">l1</span><span class="p">.</span><span class="n">l_receiptdate</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">l1</span><span class="p">.</span><span class="n">l_commitdate</span>
|
|
<span class="k">and</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">exists</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="k">select</span>
|
|
<span class="o">*</span>
|
|
<span class="k">from</span>
|
|
<span class="n">lineitem</span><span class="w"> </span><span class="n">l3</span>
|
|
<span class="k">where</span>
|
|
<span class="n">l3</span><span class="p">.</span><span class="n">l_orderkey</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">l1</span><span class="p">.</span><span class="n">l_orderkey</span>
|
|
<span class="k">and</span><span class="w"> </span><span class="n">l3</span><span class="p">.</span><span class="n">l_suppkey</span><span class="w"> </span><span class="o"><></span><span class="w"> </span><span class="n">l1</span><span class="p">.</span><span class="n">l_suppkey</span>
|
|
<span class="k">and</span><span class="w"> </span><span class="n">l3</span><span class="p">.</span><span class="n">l_receiptdate</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">l3</span><span class="p">.</span><span class="n">l_commitdate</span>
|
|
<span class="p">)</span>
|
|
<span class="k">order</span><span class="w"> </span><span class="k">by</span>
|
|
<span class="n">numwait</span><span class="w"> </span><span class="k">desc</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233563159__af746b5687e584258bf416cfc31645bfa">If such an issue occurs, you can use the following methods to check whether statistics in tables or columns has been collected using <strong id="EN-US_TOPIC_0000001233563159__b842352706141859">ANALYZE</strong>.</p>
|
|
<ol id="EN-US_TOPIC_0000001233563159__o0ec061b92a294aa29248ee9e58c80317"><li id="EN-US_TOPIC_0000001233563159__l920bfae44f984205869bb7cb753a5682">Execute <strong id="EN-US_TOPIC_0000001233563159__b842352706142232">EXPLAIN VERBOSE</strong> to analyze the execution plan and check the warning information:<pre class="screen" id="EN-US_TOPIC_0000001233563159__sef3ca6253df74d95837d72cd6e36268f">WARNING:Statistics in some tables or columns(public.lineitem(l_receiptdate,l_commitdate,l_orderkey, l_suppkey), public.orders(o_orderstatus,o_orderkey)) are not collected.
|
|
HINT:Do analyze for them in order to generate optimized plan.</pre>
|
|
</li><li id="EN-US_TOPIC_0000001233563159__l449e9ec39f86416d9a923babbc870f52">Check whether the following information exists in the log file in the <strong id="EN-US_TOPIC_0000001233563159__b842352706142651">pg_log</strong> directory. If it does, the poor query performance was caused by the lack of statistics in some tables or columns.<pre class="screen" id="EN-US_TOPIC_0000001233563159__s5cb3f95e9ca4426da01d814eb0788ecb">2017-06-14 17:28:30.336 CST 140644024579856 20971684 [BACKEND] LOG:Statistics in some tables or columns(public.lineitem(l_receiptdate, l_commitdate,l_orderkey,
|
|
.l_suppkey), public.orders(o_orderstatus,o_orderkey)) are not collected.
|
|
2017-06-14 17:28:30.336 CST 140644024579856 20971684 [BACKEND] HINT:Do analyze for them in order to generate optimized plan.</pre>
|
|
</li></ol>
|
|
<p id="EN-US_TOPIC_0000001233563159__a86aa21d45388464e8ac947da93c32fe6">By using any of the preceding methods, you can identify tables or columns whose statistics have not been collected using <strong id="EN-US_TOPIC_0000001233563159__b842352706143559">ANALYZE</strong>. You can execute <strong id="EN-US_TOPIC_0000001233563159__b842352706143751">ANALYZE</strong> to warnings or tables and columns recorded in logs to resolve the problem.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233563159__s1e06c9086d5c4776a6c005e51b908257"><h4 class="sectiontitle">Example 2: Setting <strong id="EN-US_TOPIC_0000001233563159__b84235270614396">cost_param</strong> to Optimize Query Performance</h4><p id="EN-US_TOPIC_0000001233563159__p18741849101613">For details, see <a href="dws_04_0479.html">Case: Configuring cost_param for Better Query Performance</a>.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233563159__s433255e95572433aae126e26e676ac87"><h4 class="sectiontitle">Example 3: Optimization is Not Accurate When Intermediate Results Exist in the Query Where <strong id="EN-US_TOPIC_0000001233563159__b842352706153044">JOIN</strong> Is Used for Multiple Tables</h4><p id="EN-US_TOPIC_0000001233563159__adb1d94d430f943f7a61eac36f648e8e6"><strong id="EN-US_TOPIC_0000001233563159__en-us_topic_0073253803_en-us_topic_0062578363_b5920464393549">Symptom</strong>: Query the personnel who have checked in an Internet cafe within 15 minutes before and after the check-in of a specified person.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233563159__s7c132abe7bf04701832eeb9e40e7f8ab"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span>
|
|
<span class="k">C</span><span class="p">.</span><span class="n">WBM</span><span class="p">,</span>
|
|
<span class="k">C</span><span class="p">.</span><span class="n">DZQH</span><span class="p">,</span>
|
|
<span class="k">C</span><span class="p">.</span><span class="n">DZ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">ZJHM</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">XWSJ</span>
|
|
<span class="k">FROM</span>
|
|
<span class="n">b_zyk_wbswxx</span><span class="w"> </span><span class="n">A</span><span class="p">,</span>
|
|
<span class="n">b_zyk_wbswxx</span><span class="w"> </span><span class="n">B</span><span class="p">,</span>
|
|
<span class="n">b_zyk_wbcs</span><span class="w"> </span><span class="k">C</span>
|
|
<span class="k">WHERE</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">ZJHM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'522522******3824'</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="n">A</span><span class="p">.</span><span class="n">WBDM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">B</span><span class="p">.</span><span class="n">WBDM</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="n">A</span><span class="p">.</span><span class="n">WBDM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">C</span><span class="p">.</span><span class="n">WBDM</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="k">abs</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">))</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'15 MINUTES'</span>
|
|
<span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">ZJHM</span>
|
|
<span class="k">limit</span><span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="k">offset</span><span class="w"> </span><span class="mi">0</span>
|
|
<span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233563159__aa775b68d228e44088dca206686069766"><a href="#EN-US_TOPIC_0000001233563159__fb2e54654e9f945dbbfcb3347aa535169">Figure 1</a> shows the execution plan. This query takes about 12s.</p>
|
|
<div class="fignone" id="EN-US_TOPIC_0000001233563159__fb2e54654e9f945dbbfcb3347aa535169"><a name="EN-US_TOPIC_0000001233563159__fb2e54654e9f945dbbfcb3347aa535169"></a><a name="fb2e54654e9f945dbbfcb3347aa535169"></a><span class="figcap"><b>Figure 1 </b>Using an unlogged table (1)</span><br><span><img id="EN-US_TOPIC_0000001233563159__i2974504ff208472fa396c4836412b381" src="figure/en-us_image_0000001233681839.png"></span></div>
|
|
<p id="EN-US_TOPIC_0000001233563159__a124e2a83711e46218b854db4cffe3848"></p>
|
|
<p id="EN-US_TOPIC_0000001233563159__a869ef82a080d4ea58c9708089938c038"><strong id="EN-US_TOPIC_0000001233563159__en-us_topic_0073253803_en-us_topic_0062578363_b1658455293558">Optimization analysis:</strong></p>
|
|
<ol id="EN-US_TOPIC_0000001233563159__o238fd9b9e19b4385b3ca49389dcd0061"><li id="EN-US_TOPIC_0000001233563159__l405c6f9c2d6348088fbdf9330d4e7f3b">In the execution plan, index scan is used for node scanning, the <strong id="EN-US_TOPIC_0000001233563159__b842352706165034">Join Filter</strong> calculation in the external <strong id="EN-US_TOPIC_0000001233563159__b842352706165042">NEST LOOP IN</strong> statement consumes most of the query time, and the calculation uses the string addition and subtraction, and unequal-value comparison.</li><li id="EN-US_TOPIC_0000001233563159__lcedf314f5b8c4913b6f32794d3420803">Use an unlogged table to record the Internet access time of the specified person. The start time and end time are processed during data insertion, and this reduces subsequent addition and subtraction operations.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233563159__sbbcc79f88a4f450e90d94ee380358497"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span>
|
|
<span class="normal">24</span>
|
|
<span class="normal">25</span>
|
|
<span class="normal">26</span>
|
|
<span class="normal">27</span>
|
|
<span class="normal">28</span>
|
|
<span class="normal">29</span>
|
|
<span class="normal">30</span>
|
|
<span class="normal">31</span>
|
|
<span class="normal">32</span>
|
|
<span class="normal">33</span>
|
|
<span class="normal">34</span>
|
|
<span class="normal">35</span>
|
|
<span class="normal">36</span>
|
|
<span class="normal">37</span>
|
|
<span class="normal">38</span>
|
|
<span class="normal">39</span>
|
|
<span class="normal">40</span>
|
|
<span class="normal">41</span>
|
|
<span class="normal">42</span>
|
|
<span class="normal">43</span>
|
|
<span class="normal">44</span>
|
|
<span class="normal">45</span>
|
|
<span class="normal">46</span>
|
|
<span class="normal">47</span>
|
|
<span class="normal">48</span>
|
|
<span class="normal">49</span>
|
|
<span class="normal">50</span>
|
|
<span class="normal">51</span>
|
|
<span class="normal">52</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">//</span><span class="k">Create</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">temporary</span><span class="w"> </span><span class="n">unlogged</span><span class="w"> </span><span class="k">table</span><span class="p">.</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="n">UNLOGGED</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">temp_tsw</span>
|
|
<span class="p">(</span>
|
|
<span class="n">ZJHM</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
|
|
<span class="n">WBDM</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">14</span><span class="p">),</span>
|
|
<span class="n">SWKSSJ_START</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">14</span><span class="p">),</span>
|
|
<span class="n">SWKSSJ_END</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">14</span><span class="p">),</span>
|
|
<span class="n">WBM</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">70</span><span class="p">),</span>
|
|
<span class="n">DZQH</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">6</span><span class="p">),</span>
|
|
<span class="n">DZ</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">70</span><span class="p">),</span>
|
|
<span class="n">IPDZ</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">39</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">;</span>
|
|
<span class="o">//</span><span class="k">Insert</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">Internet</span><span class="w"> </span><span class="k">access</span><span class="w"> </span><span class="n">record</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">specified</span><span class="w"> </span><span class="n">person</span><span class="p">,</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">process</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">start</span><span class="w"> </span><span class="k">time</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="k">end</span><span class="w"> </span><span class="k">time</span><span class="p">.</span>
|
|
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span>
|
|
<span class="n">temp_tsw</span>
|
|
<span class="k">SELECT</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">ZJHM</span><span class="p">,</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">WBDM</span><span class="p">,</span>
|
|
<span class="n">to_char</span><span class="p">((</span><span class="n">to_date</span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'15 MINUTES'</span><span class="p">),</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">),</span>
|
|
<span class="n">to_char</span><span class="p">((</span><span class="n">to_date</span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'15 MINUTES'</span><span class="p">),</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">),</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">WBM</span><span class="p">,</span><span class="n">B</span><span class="p">.</span><span class="n">DZQH</span><span class="p">,</span><span class="n">B</span><span class="p">.</span><span class="n">DZ</span><span class="p">,</span><span class="n">B</span><span class="p">.</span><span class="n">IPDZ</span>
|
|
<span class="k">FROM</span>
|
|
<span class="n">b_zyk_wbswxx</span><span class="w"> </span><span class="n">A</span><span class="p">,</span>
|
|
<span class="n">b_zyk_wbcs</span><span class="w"> </span><span class="n">B</span>
|
|
<span class="k">WHERE</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">ZJHM</span><span class="o">=</span><span class="s1">'522522******3824'</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">A</span><span class="p">.</span><span class="n">WBDM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">B</span><span class="p">.</span><span class="n">WBDM</span>
|
|
<span class="p">;</span>
|
|
|
|
<span class="o">//</span><span class="n">Query</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">personnel</span><span class="w"> </span><span class="n">who</span><span class="w"> </span><span class="n">have</span><span class="w"> </span><span class="k">check</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">an</span><span class="w"> </span><span class="n">Internet</span><span class="w"> </span><span class="n">cafe</span><span class="w"> </span><span class="k">before</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="k">after</span><span class="w"> </span><span class="mi">15</span><span class="w"> </span><span class="n">minutes</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">check</span><span class="o">-</span><span class="k">in</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">specified</span><span class="w"> </span><span class="n">person</span><span class="p">.</span><span class="w"> </span><span class="k">Convert</span><span class="w"> </span><span class="n">their</span><span class="w"> </span><span class="n">ID</span><span class="w"> </span><span class="n">card</span><span class="w"> </span><span class="nb">number</span><span class="w"> </span><span class="n">format</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="nb">int8</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">comparison</span><span class="p">.</span>
|
|
<span class="k">SELECT</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">WBM</span><span class="p">,</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">DZQH</span><span class="p">,</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">DZ</span><span class="p">,</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">IPDZ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">ZJHM</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">XM</span><span class="p">,</span>
|
|
<span class="n">to_date</span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">SWKSSJ</span><span class="p">,</span>
|
|
<span class="n">to_date</span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">XWSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">XWSJ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">SWZDH</span>
|
|
<span class="k">FROM</span><span class="w"> </span><span class="n">temp_tsw</span><span class="w"> </span><span class="n">A</span><span class="p">,</span>
|
|
<span class="n">b_zyk_wbswxx</span><span class="w"> </span><span class="n">B</span>
|
|
<span class="k">WHERE</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">ZJHM</span><span class="w"> </span><span class="o"><></span><span class="w"> </span><span class="n">B</span><span class="p">.</span><span class="n">ZJHM</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="n">A</span><span class="p">.</span><span class="n">WBDM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">B</span><span class="p">.</span><span class="n">WBDM</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">)::</span><span class="nb">int8</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">swkssj_start</span><span class="p">)::</span><span class="nb">int8</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">)::</span><span class="nb">int8</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">swkssj_end</span><span class="p">)::</span><span class="nb">int8</span>
|
|
<span class="k">order</span><span class="w"> </span><span class="k">by</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">ZJHM</span>
|
|
<span class="k">limit</span><span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="k">offset</span><span class="w"> </span><span class="mi">0</span>
|
|
<span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p class="litext" id="EN-US_TOPIC_0000001233563159__aefff839518ce4d229dd9129f6a299edc">The query takes about 7s. <a href="#EN-US_TOPIC_0000001233563159__f57ecd89cf73847d1a2183ccf0eed5a4e">Figure 2</a> shows the execution plan.</p>
|
|
<div class="fignone" id="EN-US_TOPIC_0000001233563159__f57ecd89cf73847d1a2183ccf0eed5a4e"><a name="EN-US_TOPIC_0000001233563159__f57ecd89cf73847d1a2183ccf0eed5a4e"></a><a name="f57ecd89cf73847d1a2183ccf0eed5a4e"></a><span class="figcap"><b>Figure 2 </b>Using an unlogged table (2)</span><br><span><img id="EN-US_TOPIC_0000001233563159__idd07117815f6414482e701a08cb49abb" src="figure/en-us_image_0000001188323770.png"></span></div>
|
|
</li><li id="EN-US_TOPIC_0000001233563159__l2d76d42dbce645f999c13c1b89e48d2a">In the previous plan, <strong id="EN-US_TOPIC_0000001233563159__b842352706165533">Hash Join</strong> has been executed, and a Hash table has been created for the large table <strong id="EN-US_TOPIC_0000001233563159__b842352706152456">b_zyk_wbswxx</strong>. The table contains large amounts of data, so the creation takes long time.<p class="litext" id="EN-US_TOPIC_0000001233563159__a8d91590b49444e728e82013df01f8d5b"><strong id="EN-US_TOPIC_0000001233563159__b842352706152532">temp_tsw</strong> contains only hundreds of records, and an equal-value connection is created between <strong id="EN-US_TOPIC_0000001233563159__b842352706152550">temp_tsw</strong> and <strong id="EN-US_TOPIC_0000001233563159__b842352706152555">b_zyk_wbswxx</strong> using wbdm (the Internet cafe code). Therefore, if <strong id="EN-US_TOPIC_0000001233563159__b842352706165643">JOIN</strong> is changed to <strong id="EN-US_TOPIC_0000001233563159__b842352706165649">NEST LOOP JOIN</strong>, index scan can be used for node scanning, and the performance will be boosted.</p>
|
|
</li><li id="EN-US_TOPIC_0000001233563159__lbdfab8f56c694d5cb188e7edee444409">Execute the following statement to change <strong id="EN-US_TOPIC_0000001233563159__b842352706165712">JOIN</strong> to <strong id="EN-US_TOPIC_0000001233563159__b842352706165716">NEST LOOP JOIN</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233563159__s9806b71d8bb64694b1f11b5b7bd8d8b6"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SET</span><span class="w"> </span><span class="n">enable_hashjoin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">off</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p class="litext" id="EN-US_TOPIC_0000001233563159__acec42ae628404f76ae202259184f57dd"><a href="#EN-US_TOPIC_0000001233563159__f962ab19471574220b202823b708cecaf">Figure 3</a> shows the execution plan. The query takes about 3s.</p>
|
|
<div class="fignone" id="EN-US_TOPIC_0000001233563159__f962ab19471574220b202823b708cecaf"><a name="EN-US_TOPIC_0000001233563159__f962ab19471574220b202823b708cecaf"></a><a name="f962ab19471574220b202823b708cecaf"></a><span class="figcap"><b>Figure 3 </b>Using an unlogged table (3)</span><br><span><img id="EN-US_TOPIC_0000001233563159__ic71682c676c34b8b8d6b05fd241a5bbb" src="figure/en-us_image_0000001188642238.png"></span></div>
|
|
</li><li id="EN-US_TOPIC_0000001233563159__l39f73c6079cc4b1db152709c53f13fdc">Save the query result set in the unlogged table for paging display.<p id="EN-US_TOPIC_0000001233563159__ae68bc7f3ef5240e79249763b56fbe2d7"><a name="EN-US_TOPIC_0000001233563159__l39f73c6079cc4b1db152709c53f13fdc"></a><a name="l39f73c6079cc4b1db152709c53f13fdc"></a>If paging display needs to be achieved on the upper-layer application page, change the <strong id="EN-US_TOPIC_0000001233563159__b84235270616619">offset</strong> value to determine the result set on the target page. In this way, the previous query statement will be executed every time after a page turning operation, which causes long response latency.</p>
|
|
<p id="EN-US_TOPIC_0000001233563159__ae4623ca011664a41ac16be2daf6eca23">To resolve this problem, you are advised to use the unlogged table to save the result set.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233563159__s848551ecb84b4d0d8919a5c7cf6118f7"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span>
|
|
<span class="normal">24</span>
|
|
<span class="normal">25</span>
|
|
<span class="normal">26</span>
|
|
<span class="normal">27</span>
|
|
<span class="normal">28</span>
|
|
<span class="normal">29</span>
|
|
<span class="normal">30</span>
|
|
<span class="normal">31</span>
|
|
<span class="normal">32</span>
|
|
<span class="normal">33</span>
|
|
<span class="normal">34</span>
|
|
<span class="normal">35</span>
|
|
<span class="normal">36</span>
|
|
<span class="normal">37</span>
|
|
<span class="normal">38</span>
|
|
<span class="normal">39</span>
|
|
<span class="normal">40</span>
|
|
<span class="normal">41</span>
|
|
<span class="normal">42</span>
|
|
<span class="normal">43</span>
|
|
<span class="normal">44</span>
|
|
<span class="normal">45</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">//</span><span class="k">Create</span><span class="w"> </span><span class="n">an</span><span class="w"> </span><span class="n">unlogged</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">save</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="k">set</span><span class="p">.</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="n">UNLOGGED</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">temp_result</span>
|
|
<span class="p">(</span>
|
|
<span class="n">WBM</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">70</span><span class="p">),</span>
|
|
<span class="n">DZQH</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">6</span><span class="p">),</span>
|
|
<span class="n">DZ</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">70</span><span class="p">),</span>
|
|
<span class="n">IPDZ</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">39</span><span class="p">),</span>
|
|
<span class="n">ZJHM</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
|
|
<span class="n">XM</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">30</span><span class="p">),</span>
|
|
<span class="n">SWKSSJ</span><span class="w"> </span><span class="nb">date</span><span class="p">,</span>
|
|
<span class="n">XWSJ</span><span class="w"> </span><span class="nb">date</span><span class="p">,</span>
|
|
<span class="n">SWZDH</span><span class="w"> </span><span class="n">NVARCHAR2</span><span class="p">(</span><span class="mi">32</span><span class="p">)</span>
|
|
<span class="p">);</span>
|
|
|
|
<span class="o">//</span><span class="k">Insert</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">unlogged</span><span class="w"> </span><span class="k">table</span><span class="p">.</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">insertion</span><span class="w"> </span><span class="n">takes</span><span class="w"> </span><span class="n">about</span><span class="w"> </span><span class="mi">3</span><span class="n">s</span><span class="p">.</span>
|
|
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span>
|
|
<span class="n">temp_result</span>
|
|
<span class="k">SELECT</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">WBM</span><span class="p">,</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">DZQH</span><span class="p">,</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">DZ</span><span class="p">,</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">IPDZ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">ZJHM</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">XM</span><span class="p">,</span>
|
|
<span class="n">to_date</span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">SWKSSJ</span><span class="p">,</span>
|
|
<span class="n">to_date</span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">XWSJ</span><span class="p">,</span><span class="s1">'yyyymmddHH24MISS'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">XWSJ</span><span class="p">,</span>
|
|
<span class="n">B</span><span class="p">.</span><span class="n">SWZDH</span>
|
|
<span class="k">FROM</span><span class="w"> </span><span class="n">temp_tsw</span><span class="w"> </span><span class="n">A</span><span class="p">,</span>
|
|
<span class="n">b_zyk_wbswxx</span><span class="w"> </span><span class="n">B</span>
|
|
<span class="k">WHERE</span>
|
|
<span class="n">A</span><span class="p">.</span><span class="n">ZJHM</span><span class="w"> </span><span class="o"><></span><span class="w"> </span><span class="n">B</span><span class="p">.</span><span class="n">ZJHM</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="n">A</span><span class="p">.</span><span class="n">WBDM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">B</span><span class="p">.</span><span class="n">WBDM</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">)::</span><span class="nb">int8</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">swkssj_start</span><span class="p">)::</span><span class="nb">int8</span>
|
|
<span class="k">AND</span><span class="w"> </span><span class="p">(</span><span class="n">B</span><span class="p">.</span><span class="n">SWKSSJ</span><span class="p">)::</span><span class="nb">int8</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">swkssj_end</span><span class="p">)::</span><span class="nb">int8</span>
|
|
<span class="p">;</span>
|
|
|
|
<span class="o">//</span><span class="n">Perform</span><span class="w"> </span><span class="n">paging</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="k">set</span><span class="p">.</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">paging</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="n">takes</span><span class="w"> </span><span class="n">about</span><span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="n">ms</span><span class="p">.</span>
|
|
<span class="k">SELECT</span>
|
|
<span class="o">*</span>
|
|
<span class="k">FROM</span>
|
|
<span class="n">temp_result</span>
|
|
<span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span>
|
|
<span class="n">SWKSSJ</span><span class="p">,</span>
|
|
<span class="n">ZJHM</span>
|
|
<span class="k">LIMIT</span><span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="k">OFFSET</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<div class="caution" id="EN-US_TOPIC_0000001233563159__note1450964223914"><span class="cautiontitle"><img src="public_sys-resources/caution_3.0-en-us.png"> </span><div class="cautionbody"><p id="EN-US_TOPIC_0000001233563159__p39259558263">Collecting global statistics using ANALYZE improves query performance.</p>
|
|
<p id="EN-US_TOPIC_0000001233563159__p185103422399">If a performance problem occurs, you can use plan hint to adjust the query plan to the previous one. For details, see <a href="dws_04_0454.html">Hint-based Tuning</a>.</p>
|
|
</div></div>
|
|
</li></ol>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_0445.html">Typical SQL Optimization Methods</a></div>
|
|
</div>
|
|
</div>
|
|
|