Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć duże dane tabeli w SQL bez logowania?

  1. Jeśli usuwasz wszystkie wiersze z tej tabeli, najprostszą opcją jest Obcięcie tabeli, coś w rodzaju

     TRUNCATE TABLE LargeTable
     GO
    

Obcięcie tabeli po prostu opróżni tabelę, nie można użyć klauzuli WHERE do ograniczenia liczby usuwanych wierszy i żadne wyzwalacze nie zostaną uruchomione.

  1. Z drugiej strony, jeśli usuwasz więcej niż 80-90 procent danych, powiedzmy, że masz łącznie 11 milionów wierszy i chcesz usunąć 10 milionów innym sposobem byłoby wstawienie tych 1 milionów wierszy (rekordy, które chcesz zachować ) do innej tabeli pomostowej. Przytnij tę dużą tabelę i wstaw z powrotem te 1 milion wierszy.

  2. Lub jeśli upuszczenie tej tabeli nie ma wpływu na uprawnienia/widoki lub inne obiekty, które mają tę dużą tabelę jako tabelę bazową, możesz przenieść te stosunkowo małe ilości wierszy do innej tabeli, upuścić tę tabelę i utworzyć inną tabelę z tym samym schemat i zaimportuj te wiersze z powrotem do tej ex-Large tabeli.

  3. Ostatnią opcją, o której mogę pomyśleć, jest zmiana Recovery Mode to SIMPLE a następnie usuń wiersze w mniejszych partiach za pomocą pętli while, takiej jak:

     DECLARE @Deleted_Rows INT;
     SET @Deleted_Rows = 1;
    
    
     WHILE (@Deleted_Rows > 0)
       BEGIN
        -- Delete some small number of rows at a time
          DELETE TOP (10000)  LargeTable 
          WHERE readTime < dateadd(MONTH,-7,GETDATE())
    
       SET @Deleted_Rows = @@ROWCOUNT;
     END
    

i nie zapomnij zmienić trybu odzyskiwania z powrotem na pełny i myślę, że musisz wykonać kopię zapasową, aby była w pełni skuteczna (tryby zmiany lub odzyskiwania).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć wszystkie klucze obce, które odwołują się do danej tabeli w SQL Server

  2. Unikanie wstrzykiwania SQL bez parametrów

  3. GETUTCDATE() Przykłady w SQL Server (T-SQL)

  4. Zapytanie SQL, aby wybrać ciąg między dwoma znanymi ciągami

  5. Usuń wypełnienie podczas wysyłania wyników zapytania w wiadomości e-mail z serwera SQL (T-SQL)