sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan sletter man store data i tabellen i SQL uden log?

  1. Hvis du sletter alle rækkerne i den tabel, er den enkleste mulighed at afkorte tabel, sådan noget som

     TRUNCATE TABLE LargeTable
     GO
    

Truncate table vil blot tømme tabellen, du kan ikke bruge WHERE-sætningen til at begrænse rækkerne, der slettes, og ingen triggere vil blive udløst.

  1. Hvis du på den anden side sletter mere end 80-90 procent af dataene, siger du, hvis du i alt har 11 millioner rækker, og du ønsker at slette 10 millioner, ville en anden måde være at indsætte disse 1 million rækker (registreringer, du vil beholde ) til et andet iscenesættelsesbord. Afkort denne store tabel og indsæt disse 1 million rækker tilbage.

  2. Eller hvis tilladelser/visninger eller andre objekter, som har denne store tabel som deres underliggende tabel, ikke bliver påvirket af at slippe denne tabel, kan du få disse relativt små mængder af rækkerne ind i en anden tabel, slippe denne tabel og oprette en anden tabel med samme skema, og importer disse rækker tilbage til denne tidligere store tabel.

  3. En sidste mulighed, jeg kan komme i tanke om, er at ændre din databases Recovery Mode to SIMPLE og slet derefter rækker i mindre partier ved hjælp af en while-løkke, noget som dette:

     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
    

og glem ikke at ændre gendannelsestilstanden tilbage til fuld, og jeg tror, ​​du skal tage en sikkerhedskopi for at gøre den fuldt ud effektiv (ændrings- eller gendannelsestilstande).



  1. Hvordan kan jeg slette en ikke-nul-begrænsning i Oracle, når jeg ikke kender navnet på begrænsningen?

  2. MySQL POW() Funktion – Hæv en værdi til kraften af ​​en anden værdi

  3. Flytning af en MariaDB-database til krypterede og ukrypterede stater

  4. Sådan nulstiller du MySQL Root Password