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

Pourquoi un UPDATE prend-il beaucoup plus de temps qu'un SELECT ?

  • écritures dans le fichier journal des transactions
  • mises à jour de l'index
  • recherches de clé étrangère
  • cascades de clés étrangères
  • vues indexées
  • colonnes calculées
  • vérifier les contraintes
  • verrouille
  • loquets
  • verrouiller l'escalade
  • isolement d'instantané
  • Mise en miroir de bases de données
  • croissance des fichiers
  • autres processus lecture/écriture
  • fractionnements de page / index clusterisé inapproprié
  • événements de débordement de pointeur/ligne vers l'avant
  • index médiocres
  • statistiques obsolètes
  • mauvaise disposition du disque (par exemple, un gros RAID pour tout)
  • Vérifiez les contraintes avec les UDF qui ont accès à la table
  • ...

Bien que le suspect habituel soit un déclencheur ...

De plus, votre condition supplémentaire n'a aucune signification :comment SQL Server sait-il l'ignorer ? Une mise à jour est toujours générée avec la plupart des bagages... même la gâchette se déclenchera toujours. Les verrous doivent être maintenus pendant que les lignes sont recherchées pour les autres conditions par exemple

Edité en septembre 2011 et février 2012 avec plus d'options