sql >> Databasteknik >  >> RDS >> Sqlserver

DELETE-kommandot är för långsamt i en tabell med klusterindex

Det kan vara långsamt eftersom en stor radering genererar en stor transaktionslogg. Försök att ta bort det i bitar, som:

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

Detta genererar mindre transaktioner. Och det mildrar låsningsproblem genom att skapa andrum för andra processer.

Du kan också titta på partitionerade tabeller . Dessa tillåter dig potentiellt att rensa gamla poster genom att ta bort en hel partition.



  1. Laravel Carbon Group per månad

  2. Standardvärde för kolumn postgres funktion med argument

  3. Hur hanterar man en Empty IN-sats i en SQL Select-sats (IBatis 2)?

  4. Hur listar jag alla tabeller i ett schema i Oracle SQL?