doc-exports/docs/dws/dev/dws_04_0486.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

40 lines
4.9 KiB
HTML

<a name="EN-US_TOPIC_0000001145814621"></a><a name="EN-US_TOPIC_0000001145814621"></a>
<h1 class="topictitle1">Case: Rewriting SQL and Deleting Subqueries (Case 1)</h1>
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001145814621__sd8c16d5d2b694b79b6ec78840ebccf5a"><h4 class="sectiontitle">Symptom</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145814621__s364b4c3932734509a34610a7d6cb8600"><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></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="mi">1</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="k">select</span><span class="w"> </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">from</span><span class="w"> </span><span class="n">customer_address_001</span><span class="w"> </span><span class="n">a4</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">a4</span><span class="p">.</span><span class="n">ca_address_sk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="p">.</span><span class="n">ca_address_sk</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">GZCS</span><span class="w"> </span>
<span class="k">from</span><span class="w"> </span><span class="n">customer_address_001</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_0000001145814621__a8e10a2157b1c4905bd497effed88f2b5">This SQL performance is poor. SubPlan exists in the execution plan as follows:</p>
<p id="EN-US_TOPIC_0000001145814621__p15141192614399"><span><img id="EN-US_TOPIC_0000001145814621__image913912603916" src="figure/en-us_image_0000001145695103.jpg"></span></p>
</div>
<div class="section" id="EN-US_TOPIC_0000001145814621__sc65067e194bb425aaa743bad024086bd"><h4 class="sectiontitle">Optimization</h4><p id="EN-US_TOPIC_0000001145814621__a95cca59a3e324221a8fb5bcff22308f3">The core of this optimization is to eliminate subqueries. Based on the service scenario analysis, <em id="EN-US_TOPIC_0000001145814621__i561583257151817">a<strong id="EN-US_TOPIC_0000001145814621__b529143706151817">.</strong>ca_address_sk</em> is not null. In terms of SQL syntax, you can rewrite the SQL statement as follows:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145814621__s7603f5ed9bd34370a59583a2c74059d9"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">select</span><span class="w"> </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">from</span><span class="w"> </span><span class="n">customer_address_001</span><span class="w"> </span><span class="n">a4</span><span class="p">,</span><span class="w"> </span><span class="n">customer_address_001</span><span class="w"> </span><span class="n">a</span><span class="w"></span>
<span class="k">where</span><span class="w"> </span><span class="n">a4</span><span class="p">.</span><span class="n">ca_address_sk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="p">.</span><span class="n">ca_address_sk</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="n">a</span><span class="p">.</span><span class="n">ca_address_sk</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<div class="note" id="EN-US_TOPIC_0000001145814621__n8a43198340af492392b6fe249be07c54"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001145814621__a36f2b4bea2824ce793d93b90e27ad363">To ensure that the modified statements have the same functions, <em id="EN-US_TOPIC_0000001145814621__i736307817152037">not null</em> is added to <em id="EN-US_TOPIC_0000001145814621__i842352697152052">customer_address_001. ca_address_sk</em>.</p>
</div></div>
</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>