Najlepsza odpowiedź
Przede wszystkim „NIE JEST MOŻLIWE PRZEKAZANIE POLA”.
Obcinanie to koncepcja w bazie danych, która nie jest jak polecenie usunięcia lub aktualizacja. Główną koncepcją Truncate jest sposób obsługi metadanych znajdujących się za sceną. Jeśli pracujesz z Oracle, możesz przestudiować koncepcję zwaną „High Water Mark” . Szczegółowe informacje można znaleźć na blogu Burleson tutaj.
Na serwerze Sql jeśli myślisz o kluczu podstawowym z wartością automatycznego inkrementacji, obetnij i ustaw wszystko na podstawę. Mam na myśli wartość początkową zdefiniowaną przez Ciebie lub wartość domyślną 1. Więc w zasadzie to, jakie operacje wykonuje na zapleczu, jest bardziej specyficzne dla metadanych i bardziej specyficzne dla właściwości bazy danych na poziomie tabeli.
Teraz, jeśli chciałeś mieć na myśli, że chcesz wyczyścić kolumnę, możesz po prostu uruchomić aktualizację z wartością NULL dla tej konkretnej kolumny lub zaktualizować ją za pomocą .
Update TABLE
Set Column = NULL/’’
Where 1 =1
Wspomniałem o tym ostatnio, gdzie klauzula, ponieważ obecnie wiele baz danych nie pozwala na aktualizację całej kolumny bez klauzuli where. W mySql nazywa się to „Flaga bezpiecznej aktualizacji” . Ale żeby być bardziej szczegółowym, zawsze aktualizuj za pomocą NULL zamiast „”, aby postępować zgodnie z dobrą praktyką.
Odpowiedź
DELETE to operacja rejestrowana w każdym wierszu. Oznacza to, że usunięcie każdego wiersza jest rejestrowane i usuwane fizycznie. Możesz usunąć dowolny wiersz, który nie wiąże się z naruszeniem ograniczeń, pozostawiając klucz obcy lub jakiekolwiek inne ograniczenia.
TRUNCATE to operacja zarejestrowana, ale w inny sposób. TRUNCATE rejestruje lokalizację transakcji stron informacyjnych, na których istnieją informacje. Cofnięcie alokacji stron informacyjnych oznacza, że wiersze informacyjne nadal istnieją na stronach informacyjnych, ale rozszerzenia są oznaczone jako puste do ponownego wykorzystania. To sprawia, że TRUNCATE jest szybszą operacją niż DELETE. Nie można obciąć tabeli zawierającej ograniczenia klucza obcego. Musisz usunąć ograniczenia, skrócić tabelę i ponownie zastosować ograniczenia.
TRUNCATE zresetuje wszystkie kolumny tożsamości do inicjalizacji wartości domyślnej. Oznacza to, że jeśli masz tabelę z kolumną tożsamości i ma 264 wiersze z wartością początkową 1, jego najnowszy rekord będzie miał wartość 264 (zakładając, że zacząłeś od wartości 1) w kolumnach twojej tożsamości. Po obcięciu tabeli podczas wstawiania nowego rekordu do pustej tabeli, kolumna tożsamości będzie miała wartość 1. DELETE won „t. W tym samym scenariuszu, jeśli bieżący wiersz, wstawienie nowego wiersza do pustej tabeli , kolumna tożsamości ma wartość 265.
Dlaczego obcinanie jest szybsze niż usuwanie?
Powód: w zapis w celu usunięcia wszystkich informacji jest kopiowany do obszaru tabel wycofywania, a następnie wykonywana jest operacja usuwania. Więc kiedy wpiszesz ROLLBACK po usunięciu tabeli, możesz odzyskać informacje (metoda get to w tempie Rollback Tables). technika zajmie trochę czasu, ale podczas korzystania z TRUNCATE usuwa informacje bezpośrednio bez kopiowania ich do obszaru tabel Rollback. Więc TRUNCATE jest szybsze. Dwa razy obcięte, nie można odzyskać informacji.