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

Polecenie DELETE jest zbyt wolne w tabeli z indeksem klastrowym

Może to być powolne, ponieważ duże usunięcie generuje duży dziennik transakcji. Spróbuj usunąć go porcjami, na przykład:

WHILE 1 = 1
BEGIN
    DELETE TOP (256) FROM FTPLog WHERE FTPLogId <= @MaxFTPLogId
    IF @@ROWCOUNT = 0
        BREAK
END

To generuje mniejsze transakcje. I łagodzi problemy z blokowaniem, tworząc przestrzeń do oddychania dla innych procesów.

Możesz także zajrzeć do tabele podzielone na partycje . Potencjalnie pozwalają one usunąć stare wpisy przez upuszczenie całej partycji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podsumować pole czasu w SQL Server

  2. Łączenie się z serwerem SQL z innego komputera

  3. Przesyłanie dokumentów do serwera sql 2008 przy użyciu asp.net C#

  4. Uzyskiwanie uprawnień do wykonywania xp_cmdshell

  5. Jak uzyskać dane z połączonych serwerów za pomocą zapytań