forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: luhuayi <luhuayi@huawei.com> Co-committed-by: luhuayi <luhuayi@huawei.com>
45 lines
12 KiB
HTML
45 lines
12 KiB
HTML
<a name="EN-US_TOPIC_0000002080670194"></a><a name="EN-US_TOPIC_0000002080670194"></a>
|
|
|
|
<h1 class="topictitle1">Hint That Disables Subquery Pull-up</h1>
|
|
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_section37466499581"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_p0550160195914">To optimize query logic, the optimizer usually pulls up subqueries for execution. However, sometimes the pulled up subqueries do not run much faster than others, and may even be slower due to enlarged search scope. In this case, you can specify the <strong id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_b172839275612">no merge</strong> hint to disable pull-up. This hint is not recommended in most cases.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_section1646157105916"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_screen171635231651"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">no</span><span class="w"> </span><span class="n">merge</span><span class="p">[</span><span class="o">@</span><span class="n">block_name</span><span class="p">]</span>
|
|
<span class="k">no</span><span class="w"> </span><span class="n">merge</span><span class="w"> </span><span class="p">([</span><span class="o">@</span><span class="n">block_name1</span><span class="p">]</span><span class="w"> </span><span class="n">subquery_name</span><span class="p">[</span><span class="o">@</span><span class="n">block_name2</span><span class="p">])</span>
|
|
</pre></div></td></tr></table></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_section1229604295914"><h4 class="sectiontitle">Description</h4><ul id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_ul198916793616"><li id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_li23841352123612"><em id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_en-us_topic_0000001510402197_i172885331829">block_name</em> indicates the block name of the statement block. For details, see <a href="dws_04_0456.html#EN-US_TOPIC_0000002080515442__en-us_topic_0000001460722632_li99021444551">block_name</a>.</li><li id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_li1698917713613"><strong id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_b428718327911">subquery_name</strong> indicates the name of a subquery. It can also be a view or CTE name. The specified subquery will not be unnested during logic optimization. If <strong id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_b3493132510409">subquery_name</strong> is not specified, the current query will not be unnested.</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_section18608892013"><h4 class="sectiontitle">Example</h4><p id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_p19393736182315">Create tables <strong id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_b63361209546">t1</strong>, <strong id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_b13001519165416">t2</strong>, and <strong id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_b75111177546">t3</strong>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_screen2059511558231"><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></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">t1</span><span class="p">(</span><span class="n">a1</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">b1</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">c1</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">d1</span><span class="w"> </span><span class="nb">int</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">t2</span><span class="p">(</span><span class="n">a2</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">b2</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">c2</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">d2</span><span class="w"> </span><span class="nb">int</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">t3</span><span class="p">(</span><span class="n">a3</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">b3</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">c3</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">d3</span><span class="w"> </span><span class="nb">int</span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_p1381914158332">The original statement is as follows:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_screen1511714018116"><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">explain</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t3</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="k">select</span><span class="w"> </span><span class="n">a1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">d2</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t1</span><span class="p">,</span><span class="n">t2</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">a1</span><span class="o">=</span><span class="n">t2</span><span class="p">.</span><span class="n">a2</span><span class="p">)</span><span class="w"> </span><span class="n">s1</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">t3</span><span class="p">.</span><span class="n">b3</span><span class="o">=</span><span class="n">s1</span><span class="p">.</span><span class="n">b2</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_p71726391901"><span><img id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_image47271255411" src="figure/en-us_image_0000001460563364.png"></span></p>
|
|
<p id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_p7943843207">In this query, you can use the following methods to disable the pull-up of subquery <strong id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_b1683917410556">s1</strong>:</p>
|
|
<ul id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_ul67078494215"><li id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_li187079491128">Method 1:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_screen1824515331722"><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">explain</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="cm">/*+ no merge(s1) */</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t3</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="k">select</span><span class="w"> </span><span class="n">a1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">d2</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t1</span><span class="p">,</span><span class="n">t2</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">a1</span><span class="o">=</span><span class="n">t2</span><span class="p">.</span><span class="n">a2</span><span class="p">)</span><span class="w"> </span><span class="n">s1</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">t3</span><span class="p">.</span><span class="n">b3</span><span class="o">=</span><span class="n">s1</span><span class="p">.</span><span class="n">b2</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_li1553152212316">Method 2:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_screen105111344431"><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">explain</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t3</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="k">select</span><span class="w"> </span><span class="cm">/*+ no merge */</span><span class="w"> </span><span class="n">a1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">d2</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t1</span><span class="p">,</span><span class="n">t2</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">a1</span><span class="o">=</span><span class="n">t2</span><span class="p">.</span><span class="n">a2</span><span class="p">)</span><span class="w"> </span><span class="n">s1</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">t3</span><span class="p">.</span><span class="n">b3</span><span class="o">=</span><span class="n">s1</span><span class="p">.</span><span class="n">b2</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
</div>
|
|
</li></ul>
|
|
<p id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_p3771164852210">Outcome:</p>
|
|
<p id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_p39281029142219"><span><img id="EN-US_TOPIC_0000002080670194__en-us_topic_0000001460722880_image11390174316397" src="figure/en-us_image_0000001460882872.png"></span></p>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_0454.html">Hint-based Tuning</a></div>
|
|
</div>
|
|
</div>
|
|
|