2010-04-27 16 views
9

Wenn ich den tatsächlichen Ausführungsplan für eine Abfrage in SQL Server Management Studio (SSMS) anschaue, wie kann ich feststellen, was ein Ausdruck wie Expr1052 darstellt?So finden Sie Expr #### im Ausführungsplan

Wenn ich die kostspieligen Teile der Abfrage identifiziere und die Eigenschaften dieser Operation betrachte, gibt es oft nur Verweise auf diese Ausdrücke oder Skalaroperatoren. Ich möchte herausfinden können, auf welchen Teil meiner Anfrage es sich bezieht.

Antwort

12

Klicken Sie im Fenster Execution Plan von SSMS mit der rechten Maustaste auf den Vorgang, der zuerst den Ausdruck berechnet, und wählen Sie Properties.

Sie sehen die Ausdrucksdefinition im Bereich rechts.

Alternativ können Sie den XML Plan durchsuchen und für die Einträge wie die Suche:

<DefinedValues> 
    <DefinedValue> 
     <ColumnReference Column="Expr1018" /> 
     <ScalarOperator ScalarString="col1 + col2"> 
     </ScalarOperator> 
    </DefinedValue> 
    … 
    </DefinedValues> 
+1

Oh ich sehe, außer in meinem Fall ist es nicht in einem Compute Scalar war. Ich muss rückwärts durch den Baum gehen und auf die Ausgangsliste für frühere Operationen schauen. So wie es einen Index-Spool gibt, der auf Expr1052 verweist, und zwei Knoten, bevor der Stream-Aggregat in der Output-Liste den Expr1052 aufgelistet hat, und die Definierten Werte zeigen, wie er berechnet/abgeleitet wird. – AaronLS