Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да изтрия големи данни от таблица в SQL без дневник?

  1. Ако изтривате всички редове в тази таблица, най-простата опция е да съкратите таблицата, нещо като

     TRUNCATE TABLE LargeTable
     GO
    

Съкращаването на таблицата просто ще изпразни таблицата, не можете да използвате клаузата WHERE, за да ограничите изтриваните редове и няма да бъдат задействани задействания.

  1. От друга страна, ако изтривате повече от 80-90 процента от данните, кажете, ако имате общо 11 милиона реда и искате да изтриете 10 милиона, друг начин би бил да вмъкнете тези 1 милион реда (записи, които искате да запазите ) към друга етапна маса. Съкратете тази голяма таблица и вмъкнете обратно тези 1 милион реда.

  2. Или ако разрешенията/изгледите или други обекти, които имат тази голяма таблица като основна таблица, не бъдат засегнати от изпускането на тази таблица, можете да прехвърлите тези относително малки количества от редовете в друга таблица, да пуснете тази таблица и да създадете друга таблица със същата схема и импортирайте тези редове обратно в тази бивша голяма таблица.

  3. Една последна опция, за която се сещам, е да промените Recovery Mode to SIMPLE и след това изтрийте редове на по-малки партиди с помощта на while цикъл, нещо като това:

     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
    

и не забравяйте да промените режима на възстановяване обратно до пълен и мисля, че трябва да направите резервно копие, за да го направите напълно ефективен (промяната или режимите за възстановяване).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 начина за намиране на редове, които съдържат главни букви в SQL Server

  2. Проактивни проверки на състоянието на SQL Server, част 1:Дисково пространство

  3. Външен ключ към композитен ключ

  4. Как да създадете ненулево ограничение за колона в таблица на SQL Server - SQL Server / T-SQL Урок, част 51

  5. Как да намерите таблици, които съдържат конкретна колона в SQL Server