doc-exports/docs/dws/umn/dws_03_0088.html
Lu, Huayi c5fcb46315 DWS UMN 801 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>
2022-12-13 12:47:57 +00:00

94 lines
12 KiB
HTML

<a name="EN-US_TOPIC_0000001146786576"></a><a name="EN-US_TOPIC_0000001146786576"></a>
<h1 class="topictitle1">How Can I Delete Table Data Efficiently?</h1>
<div id="body8662426"><p id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_p8060118">Yes. <strong id="EN-US_TOPIC_0000001146786576__b15254185916296">TRUNCATE</strong> is more efficient than <strong id="EN-US_TOPIC_0000001146786576__b4260125916296">DELETE</strong> for deleting massive data.</p>
<p id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_p186111125165116">For details, see "TRUNCATE" in the <em id="EN-US_TOPIC_0000001146786576__i43711019195514">Data Warehouse Service (DWS) Developer Guide</em>.</p>
<div class="section" id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_section19800103934711"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_p1386956174711"><strong id="EN-US_TOPIC_0000001146786576__b1777225165812">TRUNCATE</strong> quickly removes all rows from a database table.</p>
<p id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_p1786911684713">It has the same effect as the unconditional <strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_en-us_topic_0085031833_b718613010586">DELETE</strong>, but <strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_b270044945619">TRUNCATE</strong> is faster, especially for large tables, because it does not scan tables.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_section73932553477"><h4 class="sectiontitle">Features</h4><ul id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_ul1830519634816"><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li173057610482"><strong id="EN-US_TOPIC_0000001146786576__b1162765335815">TRUNCATE TABLE</strong> works like a <strong id="EN-US_TOPIC_0000001146786576__b8627145318582">DELETE</strong> statement with no <strong id="EN-US_TOPIC_0000001146786576__b14627185315815">WHERE</strong> clause, that is, emptying a table.</li><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li530520694813"><strong id="EN-US_TOPIC_0000001146786576__b7456083144625">TRUNCATE TABLE</strong> uses less system and transaction log resources.<ul id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_ul193051624820"><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li1030515611486"><strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0085031833_b64113529144625">DELETE</strong> deletes a row each time, and records each deletion in the transaction log.</li><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li17305176134813"><strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0085031833_b3244231504">TRUNCATE TABLE</strong> deletes all rows in a table by releasing the data page, and only records each releasing of the data page in the transaction log.</li></ul>
</li><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li33069654814"><strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0085031833_b2072610391807">TRUNCATE</strong>, <strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0085031833_b1972619391202">DELETE</strong>, and <strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0085031833_b972633912013">DROP</strong> are different in that:<ul id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_ul030626164812"><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li1330610664811"><strong id="EN-US_TOPIC_0000001146786576__en-us_topic_0085031833_b59296540015">TRUNCATE TABLE</strong> deletes content, releases space, but does not delete definitions.</li><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li630636204810"><strong id="EN-US_TOPIC_0000001146786576__b169751232017">DELETE TABLE</strong> deletes content, but does not delete definitions or release space.</li><li id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_li130696124811"><strong id="EN-US_TOPIC_0000001146786576__b660071211117">DROP TABLE</strong> deletes content and definitions, and releases space.</li></ul>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_section18367856124816"><h4 class="sectiontitle">Example</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_en-us_topic_0085031833_en-us_topic_0059777694_screen24408470152211"><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="c1">--Create a table.CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason;</span>
<span class="c1">--Truncate the table.TRUNCATE TABLE tpcds.reason_t1;</span>
<span class="c1">--Drop the table.DROP TABLE tpcds.reason_t1;</span>
</pre></div></td></tr></table></div>
</div>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_en-us_topic_0085031833_en-us_topic_0059777694_screen113207456328"><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></pre></div></td><td class="code"><div><pre><span></span><span class="c1">--Create a partitioned table.</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">reason_p</span><span class="w"></span>
<span class="p">(</span><span class="w"></span>
<span class="w"> </span><span class="n">r_reason_sk</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">r_reason_id</span><span class="w"> </span><span class="nb">character</span><span class="p">(</span><span class="mi">16</span><span class="p">),</span><span class="w"></span>
<span class="w"> </span><span class="n">r_reason_desc</span><span class="w"> </span><span class="nb">character</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"></span>
<span class="p">)</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">RANGE</span><span class="w"> </span><span class="p">(</span><span class="n">r_reason_sk</span><span class="p">)</span><span class="w"></span>
<span class="p">(</span><span class="w"></span>
<span class="w"> </span><span class="n">partition</span><span class="w"> </span><span class="n">p_05_before</span><span class="w"> </span><span class="k">values</span><span class="w"> </span><span class="k">less</span><span class="w"> </span><span class="k">than</span><span class="w"> </span><span class="p">(</span><span class="mi">05</span><span class="p">),</span><span class="w"></span>
<span class="w"> </span><span class="n">partition</span><span class="w"> </span><span class="n">p_15</span><span class="w"> </span><span class="k">values</span><span class="w"> </span><span class="k">less</span><span class="w"> </span><span class="k">than</span><span class="w"> </span><span class="p">(</span><span class="mi">15</span><span class="p">),</span><span class="w"></span>
<span class="w"> </span><span class="n">partition</span><span class="w"> </span><span class="n">p_25</span><span class="w"> </span><span class="k">values</span><span class="w"> </span><span class="k">less</span><span class="w"> </span><span class="k">than</span><span class="w"> </span><span class="p">(</span><span class="mi">25</span><span class="p">),</span><span class="w"></span>
<span class="w"> </span><span class="n">partition</span><span class="w"> </span><span class="n">p_35</span><span class="w"> </span><span class="k">values</span><span class="w"> </span><span class="k">less</span><span class="w"> </span><span class="k">than</span><span class="w"> </span><span class="p">(</span><span class="mi">35</span><span class="p">),</span><span class="w"></span>
<span class="w"> </span><span class="n">partition</span><span class="w"> </span><span class="n">p_45_after</span><span class="w"> </span><span class="k">values</span><span class="w"> </span><span class="k">less</span><span class="w"> </span><span class="k">than</span><span class="w"> </span><span class="p">(</span><span class="k">MAXVALUE</span><span class="p">)</span><span class="w"></span>
<span class="p">);</span><span class="w"></span>
<span class="c1">--Insert data.</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">reason_p</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">tpcds</span><span class="p">.</span><span class="n">reason</span><span class="p">;</span><span class="w"></span>
<span class="c1">--Truncate the p_05_before partition.</span>
<span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">reason_p</span><span class="w"> </span><span class="k">TRUNCATE</span><span class="w"> </span><span class="n">PARTITION</span><span class="w"> </span><span class="n">p_05_before</span><span class="p">;</span><span class="w"></span>
<span class="c1">--Truncate the p_15 partition.</span>
<span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">reason_p</span><span class="w"> </span><span class="k">TRUNCATE</span><span class="w"> </span><span class="n">PARTITION</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="mi">13</span><span class="p">);</span><span class="w"></span>
<span class="c1">--Truncate the partitioned table.</span>
<span class="k">TRUNCATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">reason_p</span><span class="p">;</span><span class="w"></span>
<span class="c1">--Drop the table.</span>
<span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">reason_p</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001146786576__en-us_topic_0000001145896685_p4367195618488"></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_03_0065.html">Database Usage</a></div>
</div>
</div>