doc-exports/docs/dws/dev/dws_04_0477.html
Lu, Huayi a24ca60074 DWS DEVELOPER 811 version
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2023-01-19 13:37:49 +00:00

172 lines
21 KiB
HTML

<a name="EN-US_TOPIC_0000001145694749"></a><a name="EN-US_TOPIC_0000001145694749"></a>
<h1 class="topictitle1">Case: Adding NOT NULL for JOIN Columns</h1>
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001145694749__s620a4245b82443c3b67ebe71ee58f625"><h4 class="sectiontitle">Symptom</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145694749__se368a296c81a460b9299c41f84a40ab6"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="o">*</span><span class="w"> </span>
<span class="k">FROM</span><span class="w"></span>
<span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="n">STARTTIME</span><span class="w"> </span><span class="n">STTIME</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_DELAY_MSEL</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_DELAY_MSEL</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_SUCCEED_TIMES</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_SUCCEED_TIMES</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">FST_PAGE_REQ_NUM</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">FST_PAGE_REQ_NUM</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_AVG_SIZE</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_AVG_SIZE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">FST_PAGE_ACK_NUM</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">FST_PAGE_ACK_NUM</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">DATATRANS_DW_DURATION</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">DATATRANS_DW_DURATION</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_SR_DELAY_MSEL</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_SR_DELAY_MSEL</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"></span>
<span class="w"> </span><span class="n">PS</span><span class="p">.</span><span class="n">SDR_WEB_BSCRNC_1DAY</span><span class="w"> </span><span class="n">SDR</span><span class="w"></span>
<span class="w"> </span><span class="k">INNER</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_ID</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_NAME</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE_ID</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"></span>
<span class="w"> </span><span class="n">nethouse</span><span class="p">.</span><span class="n">DIM_LOC_BSCRNC</span><span class="w"> </span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_ID</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_NAME</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE_ID</span><span class="p">)</span><span class="w"> </span><span class="n">DIM</span><span class="w"> </span>
<span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">SDR</span><span class="p">.</span><span class="n">BSCRNC_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DIM</span><span class="p">.</span><span class="n">BSCRNC_ID</span><span class="w"> </span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">DIM</span><span class="p">.</span><span class="n">ACCESS_TYPE_ID</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">INNER</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">nethouse</span><span class="p">.</span><span class="n">DIM_RAT_MAPPING</span><span class="w"> </span><span class="n">RAT</span><span class="w"> </span>
<span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="p">(</span><span class="n">RAT</span><span class="p">.</span><span class="n">RAT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SDR</span><span class="p">.</span><span class="n">RAT</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="n">STARTTIME</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">1461340800</span><span class="w"> </span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">STARTTIME</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">1461427200</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">RAT</span><span class="p">.</span><span class="n">ACCESS_TYPE_ID</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="c1">--and SDR.BSCRNC_ID is not null</span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"></span>
<span class="w"> </span><span class="n">STTIME</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001145694749__abfb3fa88bbd84e0d8e2f38c7961ee721"><a href="#EN-US_TOPIC_0000001145694749__f337754125d2c494984aafa9cc2e5fec2">Figure 1</a> shows the execution plan.</p>
<div class="fignone" id="EN-US_TOPIC_0000001145694749__f337754125d2c494984aafa9cc2e5fec2"><a name="EN-US_TOPIC_0000001145694749__f337754125d2c494984aafa9cc2e5fec2"></a><a name="f337754125d2c494984aafa9cc2e5fec2"></a><span class="figcap"><b>Figure 1 </b>Adding NOT NULL for JOIN columns (1)</span><br><span><img id="EN-US_TOPIC_0000001145694749__image1861710310137" src="figure/en-us_image_0000001099135196.jpg"></span></div>
</div>
<div class="section" id="EN-US_TOPIC_0000001145694749__sc973d71854b84ee0bc07849d32bfbe95"><h4 class="sectiontitle">Optimization Analysis</h4><ol id="EN-US_TOPIC_0000001145694749__o8ab1148e811d4a96bc0039348ed783c2"><li id="EN-US_TOPIC_0000001145694749__l99b5e7b76d8846db82f33d58b564a95c">As shown in <a href="#EN-US_TOPIC_0000001145694749__f337754125d2c494984aafa9cc2e5fec2">Figure 1</a>, the sequential scan phase is time consuming.</li><li id="EN-US_TOPIC_0000001145694749__l4811d2f32dc64883b158dd1d6879b7e2">The JOIN performance is poor because a large number of null values exist in the JOIN column <strong id="EN-US_TOPIC_0000001145694749__b84235270617110">BSCRNC_ID</strong> of the PS.SDR_WEB_BSCRNC_1DAY table.<p id="EN-US_TOPIC_0000001145694749__a25c10d59a2fc425bae6d57471ae48049">Therefore, you are advised to manually add <strong id="EN-US_TOPIC_0000001145694749__b842352706171344">NOT NULL</strong> for <strong id="EN-US_TOPIC_0000001145694749__b84235270616859">JOIN</strong> columns in the statement, as shown below:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145694749__s579e75fbf7d2403b8a769bcb3659e0d1"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="o">*</span><span class="w"> </span>
<span class="k">FROM</span><span class="w"></span>
<span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="n">STARTTIME</span><span class="w"> </span><span class="n">STTIME</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_DELAY_MSEL</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_DELAY_MSEL</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_SUCCEED_TIMES</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_SUCCEED_TIMES</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">FST_PAGE_REQ_NUM</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">FST_PAGE_REQ_NUM</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_AVG_SIZE</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_AVG_SIZE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">FST_PAGE_ACK_NUM</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">FST_PAGE_ACK_NUM</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">DATATRANS_DW_DURATION</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">DATATRANS_DW_DURATION</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">NVL</span><span class="p">(</span><span class="n">PAGE_SR_DELAY_MSEL</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="n">PAGE_SR_DELAY_MSEL</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"></span>
<span class="w"> </span><span class="n">PS</span><span class="p">.</span><span class="n">SDR_WEB_BSCRNC_1DAY</span><span class="w"> </span><span class="n">SDR</span><span class="w"></span>
<span class="w"> </span><span class="k">INNER</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_ID</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_NAME</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE_ID</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"></span>
<span class="w"> </span><span class="n">nethouse</span><span class="p">.</span><span class="n">DIM_LOC_BSCRNC</span><span class="w"> </span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_ID</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">BSCRNC_NAME</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">ACCESS_TYPE_ID</span><span class="p">)</span><span class="w"> </span><span class="n">DIM</span><span class="w"> </span>
<span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">SDR</span><span class="p">.</span><span class="n">BSCRNC_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DIM</span><span class="p">.</span><span class="n">BSCRNC_ID</span><span class="w"> </span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">DIM</span><span class="p">.</span><span class="n">ACCESS_TYPE_ID</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">INNER</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">nethouse</span><span class="p">.</span><span class="n">DIM_RAT_MAPPING</span><span class="w"> </span><span class="n">RAT</span><span class="w"> </span>
<span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="p">(</span><span class="n">RAT</span><span class="p">.</span><span class="n">RAT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SDR</span><span class="p">.</span><span class="n">RAT</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="n">STARTTIME</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">1461340800</span><span class="w"> </span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">STARTTIME</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">1461427200</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">RAT</span><span class="p">.</span><span class="n">ACCESS_TYPE_ID</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">SDR</span><span class="p">.</span><span class="n">BSCRNC_ID</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">null</span><span class="w"></span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"></span>
<span class="w"> </span><span class="n">STTIME</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="n">A</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001145694749__a1972af9272cd4e15ada2ac1702af1668"><a href="#EN-US_TOPIC_0000001145694749__f823445cc0dde4815a43bfe9bf5267d0a">Figure 2</a> shows the execution plan.</p>
<div class="fignone" id="EN-US_TOPIC_0000001145694749__f823445cc0dde4815a43bfe9bf5267d0a"><a name="EN-US_TOPIC_0000001145694749__f823445cc0dde4815a43bfe9bf5267d0a"></a><a name="f823445cc0dde4815a43bfe9bf5267d0a"></a><span class="figcap"><b>Figure 2 </b>Adding NOT NULL for JOIN columns (2)</span><p id="EN-US_TOPIC_0000001145694749__p11542102920126"><span><img id="EN-US_TOPIC_0000001145694749__image039893312120" src="figure/en-us_image_0000001098975208.png"></span></p>
</div>
</li></ol>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_0474.html">Optimization Cases</a></div>
</div>
</div>