SQL DELETE table – mazání + rozdíl DELETE vs TRUNCATE

Poslední aktualizace:

Rozeznáváme 2 typy příkazu, které slouží k mazání datSQL příkazy DELETE a TRUNCATE (viz článek SQL TRUNCATE). Každý je jiny a hodí se pro jinou situaci. Je dobré znát oba a podle potřeby si vybrat.

Syntaxe (první varianta je optional):

DELETE FROM dbo.Tabulka
WHERE Podminka;

nebo

DELETE dbo.Tabulka
WHERE Podminka;

Na velké množství záznamů opatrně

Pomocí příkazu můžeme s tabulky vymazat záznamy a na rozdíl od TRUNCATE zde můžeme stanovit podmínku. Pokud podmínku nestanovíme, je smazána celá tabulka. Pokud příkaz nad tabulkou pustíme, je celý průběh zaznamenávám v transakčním logu. Proto je v tomto případě lepší použít TRUNCATE, protože je transakční log zatížen jen minimálně a průběh je daleko ryychlejší

U mazání velkého počtu záznamů se nám tím pádem může tato operace dost protáhnout. Navíc nám transakční log během operace dost nabobtná. Mazáním většího počtu záznamů může také dojít k locku celé tabulky. Pokud se chcete těmto problémům vyhnout, tak při použití v tomto příkazu nad velkým množstvím záznamů iterujte po předem daném množství mazaných záznamů, viz. cyklus:

Syntaxe pro velké množství záznamů:

WHILE 1 = 1
   BEGIN
   DELETE TOP (1000) FROM dbo.Tabulka
   WHERE Podminka
IF @@rowcount < 1000 BREAK;
END

Syntaxe na základě JOIN:

DELETE FROM dbo.Tabulka
FROM dbo.Tabulka AS A
INNER JOIN dbo.Tabulka_2 AS B
ON A.ID = B.ID
WHERE B.Podminka;

Skript bude mazat po 1000 záznamech a cyklus přeruší pokud  bude počet vymazaných záznamů nižší než 1000 = došlo k poslední iteraci.

Rozdíl DELETE vs TRUNCATE

Oba dva příkazy mažou z tabulky záznamy, existuje však mezi nimi řada rozdílů

  • Transakční log – zapisuje každý vymazaný záznam do transakčního logu a zpomaluje se tak celá operace
  • Indexované View – DELETE statement na rozdíl od TRUNCATE můžeme aplikovat na indexované view
  • Podmínka – u mazání můžeme stanovit podmínku, použít JOINY a table expression
SQL DELETE table – mazání + rozdíl DELETE vs TRUNCATE
5 (100%) 2 vote[s]

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Category: Operace s tabulkou Tags:

About Ing. Jan Zedníček - BI Developer, Finance controller

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.