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>
112 lines
15 KiB
HTML
112 lines
15 KiB
HTML
<a name="EN-US_TOPIC_0000001233510113"></a><a name="EN-US_TOPIC_0000001233510113"></a>
|
|
|
|
<h1 class="topictitle1">EXPLAIN PLAN</h1>
|
|
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001233510113__section0601642305"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_p8060118">You can run the <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b1095194184114">EXPLAIN PLAN</strong> statement to save the information about an execution plan to the <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b17742154310411">PLAN_TABLE</strong> table. Different from the <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b1657015994212">EXPLAIN</strong> statement, <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b1239712201423">EXPLAIN PLAN</strong> only stores plan information and does not print it on the screen.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233510113__s9f2264e2319e4b329beb2cc998aef4b0"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510113__sa803705c5dd0427785f7c2ad18e7480d"><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">EXPLAIN</span><span class="w"> </span><span class="n">PLAN</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">STATEMENT_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">string</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="k">FOR</span><span class="w"> </span><span class="k">statement</span><span class="w"> </span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233510113__sb18c2916cdb4454fb4dce7df02b2574a"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001233510113__u66657f1954674909abfac68f92a0d8ab"><li id="EN-US_TOPIC_0000001233510113__li6967438171118"><strong id="EN-US_TOPIC_0000001233510113__b9296104618111">PLAN</strong><p id="EN-US_TOPIC_0000001233510113__p178115429111">Stores plan information in <strong id="EN-US_TOPIC_0000001233510113__b18497529381">PLAN_TABLE</strong>. If the storing is successful, <strong id="EN-US_TOPIC_0000001233510113__b9850145203813">EXPLAIN SUCCESS</strong> is returned.</p>
|
|
</li><li id="EN-US_TOPIC_0000001233510113__li72151651101113"><strong id="EN-US_TOPIC_0000001233510113__b134719125">STATEMENT_ID</strong><div class="p" id="EN-US_TOPIC_0000001233510113__p980445821117">Tags a query. The tag information will be stored in <strong id="EN-US_TOPIC_0000001233510113__b244865533815">PLAN_TABLE</strong>.<div class="note" id="EN-US_TOPIC_0000001233510113__nd4e3f1899452426dade34b845630fcf9"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001233510113__a7b08780cc9b2450f9ec5395bb24db4f7">If the <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b9121858205412">EXPLAIN PLAN</strong> statement does not contain <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b8739153535413">SET STATEMENT_ID</strong>, the value of <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b15113153610557">STATEMENT_ID</strong> is empty by default. In addition, the value of <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b17144161295618">STATEMENT_ID</strong> cannot exceed 30 bytes. Otherwise, an error will be reported.</p>
|
|
</div></div>
|
|
</div>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233510113__s89eef1e75b3d4f9f9e9dfbe147a20f8c"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001233510113__u6886e473fe8a44d28ffac26b060c89e6"><li id="EN-US_TOPIC_0000001233510113__l2413d66ffcb24b4a9b9c9ab26ea0e6ee"><strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b82071246155613">EXPLAIN PLAN</strong> cannot be executed on DNs.</li><li id="EN-US_TOPIC_0000001233510113__lb398a4c917ae4b6eae7f4cb85f2390bc">Plan information cannot be collected for SQL statements that failed to be executed.</li><li id="EN-US_TOPIC_0000001233510113__l24c482e8981e44d19d28112583bc84fa">Data in <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b1320312535716">PLAN_TABLE</strong> is in a session-level life cycle. Sessions are isolated from users and thereby users can view data of only the current session and current user.</li><li id="EN-US_TOPIC_0000001233510113__le4c38d6dee964f83b119094f3569253d"><strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b13183193914017">PLAN_TABLE</strong> cannot be joined with GDS foreign tables.</li><li id="EN-US_TOPIC_0000001233510113__l4525fd38878a4a88a16b1caca3a30b6a">For a query that cannot be pushed down, object information cannot be collected and only such information as <strong id="EN-US_TOPIC_0000001233510113__b9352195312412">REMOTE_QUERY</strong> and <strong id="EN-US_TOPIC_0000001233510113__b0358153174110">CTE</strong> can be collected. For details, see <a href="#EN-US_TOPIC_0000001233510113__s30671eba40e14af88f1e45bd5bbd6c5d">Example 2</a>.</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233510113__s13bd84b088fd480caf57ce42dab7b095"><h4 class="sectiontitle">Example 1</h4><p id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_p17662113426">You can perform the following steps to collect execution plans of SQL statements by running <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b18142238220">EXPLAIN PLAN</strong>:</p>
|
|
<ol id="EN-US_TOPIC_0000001233510113__o378982f341d541108b3c4f158715ad1c"><li id="EN-US_TOPIC_0000001233510113__li327045494015"><span>Import TPC-H sample data. </span></li><li id="EN-US_TOPIC_0000001233510113__l71eacc2d5b204aa4bbe363c0b9864bc5"><span>Run the <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b510313131543">EXPLAN PLAN</strong> statement.</span><p><div class="note" id="EN-US_TOPIC_0000001233510113__n5f8b4c73600246ccab23e72deb64cdb0"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001233510113__a96face6253694a439fd82910cf1a019a">After the <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b6432241543">EXPLAIN PLAN</strong> statement is executed, plan information is automatically stored in <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b138196474420">PLAN_TABLE</strong>. <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b1980311151653">INSERT</strong>, <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b987992012510">UPDATE</strong>, and <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b452232310519">ANALYZE</strong> cannot be performed on <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b96431234755">PLAN_TABLE</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001233510113__ad435784576c64cef8d8a413443cc6126">For details about <strong id="EN-US_TOPIC_0000001233510113__b3514371219">PLAN_TABLE</strong>, see the PLAN_TABLE system view.</p>
|
|
</div></div>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510113__s879c71be2b0b4cf39fb55e3c18dde52b"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">explain</span><span class="w"> </span><span class="n">plan</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="n">statement_id</span><span class="o">=</span><span class="s1">'TPCH-Q4'</span><span class="w"> </span><span class="k">for</span>
|
|
<span class="k">select</span>
|
|
<span class="n">o_orderpriority</span><span class="p">,</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">order_count</span>
|
|
<span class="k">from</span>
|
|
<span class="n">orders</span>
|
|
<span class="k">where</span>
|
|
<span class="n">o_orderdate</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="s1">'1993-07-01'</span><span class="p">::</span><span class="nb">date</span>
|
|
<span class="k">and</span><span class="w"> </span><span class="n">o_orderdate</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="s1">'1993-07-01'</span><span class="p">::</span><span class="nb">date</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">'3 month'</span>
|
|
<span class="k">and</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="k">where</span>
|
|
<span class="n">l_orderkey</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">o_orderkey</span>
|
|
<span class="k">and</span><span class="w"> </span><span class="n">l_commitdate</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">l_receiptdate</span>
|
|
<span class="p">)</span>
|
|
<span class="k">group</span><span class="w"> </span><span class="k">by</span>
|
|
<span class="n">o_orderpriority</span>
|
|
<span class="k">order</span><span class="w"> </span><span class="k">by</span>
|
|
<span class="n">o_orderpriority</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_li8280657851"><span>Query <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b34571837185415">PLAN_TABLE</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510113__s094a41f0392f4b07864aac2de8225db8"><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">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">PLAN_TABLE</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233510113__a62df7950c1854e22ae39ca3f645f14fd"><span><img id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_image207949394574" src="figure/en-us_image_0000001233430213.png"></span></p>
|
|
</p></li><li id="EN-US_TOPIC_0000001233510113__l6db2aeb5795e42abb5b05918fd7a1d08"><span>Delete data from <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b1043174121717">PLAN_TABLE</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510113__s4e86c8f2a82d4f299d68ba12c1c541c6"><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">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">PLAN_TABLE</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">xxx</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li></ol>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233510113__s30671eba40e14af88f1e45bd5bbd6c5d"><a name="EN-US_TOPIC_0000001233510113__s30671eba40e14af88f1e45bd5bbd6c5d"></a><a name="s30671eba40e14af88f1e45bd5bbd6c5d"></a><h4 class="sectiontitle">Example 2</h4><p id="EN-US_TOPIC_0000001233510113__a9903f820c46e44839f465b281dadd3d5">For a query that cannot be pushed down, only such information as <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b5595243152914">REMOTE_QUERY</strong> and <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b10523125562911">CTE</strong> can be collected from <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b19324023183018">PLAN_TABLE</strong> after <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b11186123915307">EXPLAIN PLAN</strong> is executed.</p>
|
|
<div class="p" id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_p825152815242">The optimizer generates a plan for pushing down statements. In this case, only <strong id="EN-US_TOPIC_0000001233510113__en-us_topic_0165816825_b14663034320">REMOTE_QUERY</strong> can be collected.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510113__se2ef21547a8949b5a5ddad2854dd4eb9"><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="w"> </span><span class="k">explain</span><span class="w"> </span><span class="n">plan</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="n">statement_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'test remote query'</span><span class="w"> </span><span class="k">for</span>
|
|
<span class="w"> </span><span class="k">select</span>
|
|
<span class="w"> </span><span class="k">current_user</span>
|
|
<span class="w"> </span><span class="k">from</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="n">customer</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="p" id="EN-US_TOPIC_0000001233510113__a9adb2793b5e54e2cbfcb095233ccf04e">Query <strong id="EN-US_TOPIC_0000001233510113__b1097843235">PLAN_TABLE</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510113__sa311d1721c5c4f368e51c5901ec955d3"><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">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">PLAN_TABLE</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233510113__ad2c619482ef14e35a132a8ad2538f4f7"><span><img id="EN-US_TOPIC_0000001233510113__i2b928e9c1fb748e9b869a3c4bcc963e6" src="figure/en-us_image_0000001188270570.png"></span></p>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0227.html">DML Syntax</a></div>
|
|
</div>
|
|
</div>
|
|
|