sql >> Database >  >> RDS >> Sqlserver

Delete-instructie in SQL is erg traag

Dingen die ervoor kunnen zorgen dat het verwijderen traag verloopt:

  • veel records verwijderen
  • veel indexen
  • ontbrekende indexen op refererende sleutels in onderliggende tabellen. (dank aan @CesarAlvaradoDiaz voor het vermelden hiervan in de reacties)
  • impasses en blokkades
  • triggers
  • cascade verwijderen (die tien bovenliggende records die u verwijdert, kunnen betekenen dat miljoenen onderliggende records worden verwijderd)
  • Transactielogboek moet groeien
  • Veel buitenlandse sleutels om te controleren

Dus uw keuzes zijn om erachter te komen wat blokkeert en het te repareren of om de verwijderingen buiten kantooruren uit te voeren wanneer ze de normale productiebelasting niet verstoren. U kunt het verwijderen in batches uitvoeren (handig als u triggers, trapsgewijs verwijderen of een groot aantal records hebt). U kunt de indexen laten vallen en opnieuw maken (het beste als u dat ook buiten kantooruren kunt doen).



  1. Enkele vragen met betrekking tot SphinxSE- en RT-indexen

  2. Waarom veroorzaakt deze MySQL-trigger een stack-overflow?

  3. Kolomnaam als parameter in INSERT-instructie

  4. Waarden samenvoegen op basis van ID