Bästa svaret
Först och främst “DET ÄR INTE MÖJLIGT ATT TRUNKERA ETT FELT”.
Trunkerar är en koncept i databasen som inte är som ett radera uttalande eller en uppdatering. Huvudkonceptet för Truncate är hur metadata bakom scenen hanteras. Om du arbetar med Oracle kan du studera ett koncept som heter “High Water Mark” . Du hittar den i detalj i Burlesons blogg här.
I SQL-server om du tänker på en primär nyckel med automatiskt ökningsvärde, stäng av allt till basen. Jag menar startvärdet definierat av dig eller standard 1. Så, i princip vilka operationer det gör i baksidan är mer specifikt för metadata och mer specifikt för tabellnivåegenskap i en databas.
Nu, om du ville mena att du vill rengöra en kolumn, du kan bara avfyra en uppdatering med NULL för den specifika kolumnen eller så kan du uppdatera med .
Update TABLE
Set Column = NULL/’’
Where 1 =1
Jag nämnde det här sist där klausul eftersom nu många dagar databaser inte tillåter dig att uppdatera hela kolumnen utan en där klausul. I mySql kallades det som ”Säker uppdateringsflagga” . Men för att vara mer specifik, uppdatera alltid med NULL istället för för att följa en god praxis
Svar
DELETE är en loggad operation på en per rad. Detta innebär att radering av varje rad registreras och tas bort fysiskt. Du kan radera alla rader som inte innebär en överträdelse av begränsningen medan du lämnar den främmande nyckeln eller andra begränsningar på plats.
TRUNCATE är en loggad åtgärd, men på ett annat sätt. TRUNCATE loggar avtalsplatsen för informationssidor där information finns. Fördelningen av informationssidor innebär att dina informationsrader fortfarande finns på informationssidorna, men tilläggen är markerade som tomma för återanvändning. Detta gör TRUNCATE till en snabbare operation för att utföra över DELETE. Kan inte trunka en tabell med begränsningar för främmande nycklar. Du måste ta bort begränsningarna, stänga av tabellen och använda begränsningarna igen.
TRUNCATE återställer alla identitetskolumner till standardvärdesinitiering. Det betyder att om du har en tabell med en identitetskolumn och har 264 rader med ett frövärde på 1, kommer hans senaste post att ha värdet 264 (förutsatt att du började med värde 1) i kolumnerna i din identitet. Efter att du har avkortat din tabell när du sätter in en ny post i den tomma tabellen kommer identitetskolumnen att ha värdet 1. DELETE vann ”t. I samma scenario, om den aktuella raden, infogar du en ny rad i den tomma tabellen har identitetskolumnen värdet 265.
Varför Trunkerar är snabbare än Radera?
Orsak: I skrivning för att radera all information kopieras till tabellutrymmet för återställning och sedan utförs borttagning. Så när du skriver ROLLBACK efter att du har tagit bort en tabell kan du få tillbaka informationen (metoden får den för takten i återställningstabeller). tekniken tar tid, men när du använder TRUNCATE tar den bort information direkt utan att kopiera den till återställningstabellutrymme. Så TRUNCATE är snabbare. Två gånger avkortas kan du inte få tillbaka informationen.