sql >> Database >  >> RDS >> Sqlserver

DELETE-opdracht is te traag in een tabel met geclusterde index

Het kan traag zijn omdat een grote verwijdering een groot transactielogboek genereert. Probeer het in delen te verwijderen, zoals:

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

Dit genereert kleinere transacties. En het vermindert vergrendelingsproblemen door ademruimte te creëren voor andere processen.

U kunt ook kijken naar gepartitioneerde tabellen . Hiermee kunt u mogelijk oude vermeldingen opschonen door een hele partitie te verwijderen.



  1. Actieve record:JSON-query

  2. Hoe kan ik rijen in omgekeerde volgorde selecteren in MySQL?

  3. Oracle ROWID als functie/procedure parameter

  4. Hoe doe je Multiple Inner Joins in Linq to Entities