2010-11-11 5 views
1

SQL 2008. Je cours sproc à partir de SQL Studio et quand j'essaye d'obtenir le plan d'exécution réel il gonfle le tempdb.SQL. Comment exclure une déclaration d'Actual Exec Plan?

J'ai réduit le problème à appeler une fonction scalaire de ligne qui est utilisée sur 700K table de lignes.

que SQL je déduisent essaie de créer des plans 700K exec pour cette fonction et écrit toutes les données à tempdb qui a 3Gb espace libre ..

je vraiment besoin de voir le plan pour cette fonction. Puis-je exclure explicitement une instruction de la génération du plan exec?

Répondre

3

Vous ne pouvez pas l'exclure d'un plan d'exécution, autre que de supprimer l'appel de la requête.

Toutefois, il semble que ce soit un candidat idéal pour passer d'une fonction UDF scalaire à une fonction UDF de table en ligne. Les fonctions UDF scalaires peuvent être une cause importante de mauvaises performances car elles doivent être exécutées une fois par ligne dans une requête.

Avoir lu this article qui contient un exemple à démontrer.

+0

assez juste .. mais il n'y a aucun point à réécrire la fonction car il faut 5 sec pour exécuter cette déclaration une fois par jour .... Il suffit d'armer le plan d'exécution. –

+0

@Bobb - OK, ne va pas avoir un impact massif alors. Tout le sujet de la table UDF scalar vs inline mérite d'être pris en compte en général. – AdaTheDev