Nejlepší odpověď
Nejprve „NENÍ MOŽNÉ ZKRÁCIT POLE“.
Zkrácení je koncept v databázi, který není jako prohlášení o smazání nebo aktualizace. Hlavní koncept Truncate je způsob, jakým se zachází s metadaty za scénou. Pokud pracujete se společností Oracle, můžete studovat koncept s názvem „High Water Mark“ . Najdete jej velmi podrobně na blogu Burleson zde.
Na serveru SQL Pokud přemýšlíte o primárním klíči s hodnotou automatického přírůstku, ořízněte to všechno na základnu. Mám na mysli vámi definovanou počáteční hodnotu nebo výchozí hodnotu 1. Takže v podstatě to, co dělá operace v back-endu, je konkrétnější pro metadata a konkrétnější pro vlastnost databáze na úrovni tabulky.
Nyní, pokud chtěli jste znamenat, že chcete vyčistit sloupec, stačí spustit aktualizaci s NULL pro daný sloupec nebo můžete aktualizovat pomocí .
Update TABLE
Set Column = NULL/’’
Where 1 =1
Zmínil jsem to naposledy, když klauzule, protože dnes vám spousta databází neumožňuje aktualizovat celý sloupec bez klauzule where. V mySql se volalo jako „Příznak Bezpečné aktualizace“ . Chcete-li však být konkrétnější, vždy aktualizujte pomocí NULL namísto „“, abyste se řídili dobrým postupem.
Odpověď
DELETE je logovaná operace na každý řádek. To znamená, že odstranění každého řádku je fyzicky zaznamenáno a odstraněno. Můžete odstranit jakýkoli řádek, který neobsahuje porušení omezení, přičemž ponecháte cizí klíč nebo jakákoli jiná omezení na místě.
TRUNCATE je logovaná operace, ale jiným způsobem. TRUNCATE zaznamená umístění dohody na informačních stránkách, na nichž informace existují. Vyřazení informačních stránek znamená, že vaše informační řádky na informačních stránkách stále existují, ale rozšíření jsou označena jako prázdná pro opětovné použití. To je to, co dělá TRUNCATE rychlejší operací, která se provádí přes DELETE. Nelze zkrátit tabulku, která má omezení cizího klíče. Musíte odstranit omezení, zkrátit tabulku a znovu použít omezení.
TRUNCATE resetuje všechny sloupce identity na inicializaci výchozí hodnoty. To znamená, že pokud máte tabulku se sloupcem identity a má 264 řádků s počáteční hodnotou 1, jeho nejnovější záznam bude mít ve sloupcích vaší identity hodnotu 264 (za předpokladu, že jste začali s hodnotou 1). Po zkrácení tabulky při vložení nového záznamu do prázdné tabulky bude mít sloupec identity hodnotu 1. DELETE won „t. Ve stejném scénáři, pokud aktuální řádek, vložení nového řádku do prázdné tabulky , sloupec identity má hodnotu 265.
Proč je Zkrácení rychlejší než Odstranit?
Důvod: V zápis na smazání všech informací se zkopíruje do tabulkového prostoru vrácení zpět a poté se provede operace mazání. Když tedy po odstranění tabulky napíšete ROLLBACK, můžete informace získat zpět (metoda to získá pro tempo Rollback Tables). Celý tento technika bude nějakou dobu trvat, ale při použití funkce TRUNCATE odstraní informace přímo, aniž by je zkopírovala do tabulkového prostoru Rollback. TRUNCATE je tedy rychlejší. Dvakrát zkrácené informace nelze získat zpět.