Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

L'instruction de suppression dans SQL est très lente

Choses qui peuvent ralentir une suppression :

  • supprimer un grand nombre d'enregistrements
  • de nombreux index
  • index manquants sur les clés étrangères dans les tables enfants. (merci à @CesarAlvaradoDiaz pour l'avoir mentionné dans les commentaires)
  • interblocages et blocages
  • déclencheurs
  • suppression en cascade (ces dix enregistrements parents que vous supprimez peuvent entraîner la suppression de millions d'enregistrements enfants)
  • Journal des transactions à développer
  • Beaucoup de clés étrangères à vérifier

Vos choix sont donc de découvrir ce qui bloque et de le réparer ou d'exécuter les suppressions en dehors des heures où elles n'interféreront pas avec la charge de production normale. Vous pouvez exécuter la suppression par lots (utile si vous avez des déclencheurs, une suppression en cascade ou un grand nombre d'enregistrements). Vous pouvez supprimer et recréer les index (le mieux est de pouvoir le faire également en dehors des heures de travail).