Beste svaret
Først og fremst “DET ER IKKE MULIG Å TRUNKERE ET FELT”.
Trunker er en konsept i databasen som ikke er som en slettingsuttalelse eller en oppdatering. Hovedkonseptet med Truncate er hvordan metadataene bak scenen håndteres. Hvis du jobber med Oracle, kan du studere et konsept kalt “High Water Mark” . Du finner den veldig detaljert i Burlesons blogg her.
I SQL-server Hvis du tenker på en primærnøkkel med automatisk økningsverdi, kan du avkorte alt til basen. Jeg mener startverdien definert av deg eller standard 1. Så, i utgangspunktet hvilke operasjoner den gjør i bakenden, er mer spesifikk for metadata og mer spesifikk for tabellnivåegenskapene til en database.
Nå, hvis du ville mene at du vil rense en kolonne, du kan bare skyte en oppdatering med NULL for den aktuelle kolonnen, eller du kan oppdatere med .
Update TABLE
Set Column = NULL/’’
Where 1 =1
Jeg nevnte dette sist hvor klausul fordi det nå mange dager ikke er mulig å oppdatere hele kolonnen uten hvor klausul. I mySql kalles det som “Safe Update flag” . Men for å være mer spesifikk, oppdater alltid med NULL i stedet for ‘’ for å følge god praksis
Svar
SLETT er en logget operasjon på en per rad. Dette betyr at slettingen av hver rad blir registrert og fjernet fysisk. Du kan slette en hvilken som helst rad som ikke innebærer brudd på begrensningene, mens du lar den utenlandske nøkkelen eller andre begrensninger være på plass.
TRUNCATE er en logget operasjon, men på en annen måte. TRUNCATE logger avtaksplasseringen til informasjonssider der informasjonen finnes. Distribusjonen av informasjonssider betyr at informasjonsradene dine fortsatt eksisterer på informasjonssidene, men utvidelsene er merket som tomme for gjenbruk. Dette er det som gjør TRUNCATE til en raskere operasjon for å utføre over DELETE. Kan ikke avkorte en tabell som har utenlandske nøkkelbegrensninger. Du må fjerne begrensningene, avkorte tabellen og bruke begrensningene på nytt.
TRUNCATE vil tilbakestille alle identitetskolonner til initialiseringsverdien. Dette betyr at hvis du har en tabell med en identitetskolonne og har 264 rader med en kjerneverdi på 1, vil den siste posten hans ha verdien 264 (forutsatt at du startet med verdi 1) i kolonnene til identiteten din. Etter å ha avkortet tabellen din når du setter inn en ny post i den tomme tabellen, vil identitetskolonnen ha verdien 1. DELETE vant «t. I samme scenario, hvis den nåværende raden setter inn en ny rad i den tomme tabellen har identitetskolonnen verdien 265.
Hvorfor avkortes er raskere enn Delete?
Årsak: I skriving for å slette all informasjon kopieres til rollback-tabellområdet og deretter utføres slettingsoperasjon. Så når du skriver ROLLBACK etter å ha slettet en tabell, kan du få tilbake informasjonen (metoden får den for tempoet i Rollback Tables). teknikken vil ta tid, men når du bruker TRUNCATE, fjerner den informasjonen direkte uten å kopiere den til tilbaketrekkbar tabellplass. Så TRUNCATE er raskere. To ganger avkortet kan du ikke få tilbake informasjonen.