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

Командата DELETE е твърде бавна в таблица с клъстерен индекс

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

WHILE 1 = 1
BEGIN
    DELETE TOP (256) FROM FTPLog WHERE FTPLogId <= @MaxFTPLogId
    IF @@ROWCOUNT = 0
        BREAK
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. създаване на агрегации на подгрупи в sql въз основа на стойност на колона

  2. Какво представлява SQL Server RAISERROR?

  3. Вижте дали дадена таблица има ограничение по подразбиране в SQL Server, като използвате OBJECTPROPERTY()

  4. SQL заявка за извличане на числа в дадени стъпки между диапазон

  5. SQL Server:Как да получите справка за външен ключ от information_schema?