J'ai eu des problèmes de performance avec un déclencheur SQL. Le problème concerne l'exécution d'une requête SQL lors de l'utilisation d'une instruction select avec la table de déclencheur INSERTED.Problème: déclenchement Copie de lignes SUPPRIME dans INSERTION ou table des variables
SELECT x FROM y WHERE x IN (SELECT x FROM INSERTED)
Le plan d'exécution de la requête des points à l'(SELECT x FROM INSERTED)
beaucoup plus long que prévu. Nous parlons x1000s de lignes ici.
Si je crée une variable de table, et je sélectionne les lignes de Inséré dans la variable de table, puis utilisez la variable de table de la clause « IN », il est beaucoup plus rapide.
Ma question est pourquoi est-ce plus rapide? J'ai déjà une idée de ce que ça pourrait être. J'ai lu que la table INSERTED est une table virtuelle et cela provient des journaux de transactions et prend donc beaucoup plus de temps à lire que l'utilisation de la variable de table. Cependant, j'aurais pensé que sélectionner les lignes de la table INSERTED dans la variable table annulerait les effets positifs de l'utilisation de la variable table dans la clause 'IN'.
Toutes les idées pour lesquelles cela est beaucoup plus rapide?
Désolé pour ça, je m'en souviendrai pour la prochaine fois! – jaffa