Skip to content

Execution Plan ​

The Execution Plan pane shows the captured execution plan as a tree of operators, connected to the Timeline:

Execution Plan with an operator selected during replay

Each operator shows its name, object, and cost percentage, plus a small bar tracking its progress as the replay runs. Operators that consume more than one input, like a Hash Match join, label each input - Build and Probe for a hash join. See the Showplan operators reference for what each operator does.

During replay the plan animates what is happening at the playhead - active operators highlight, rows streaming between operators are drawn as moving flow lines (thicker lines carry more rows), and operators blocked waiting on their input are marked. The plan can be zoomed with Ctrl + mouse wheel and panned by dragging.

Selecting an operator (on the plan, the Timeline's Plan band, or the Events pane) highlights it and, if Call Stack events were captured, focuses the Call Tree on that operator's frames.

Double-click an operator to select it and open its Properties. Right-click an operator for:

  • Open Index: and the index's name - opens the index in the Index View, linked to the replay, or a columnstore index in the Columnstore Viewer
  • Simulate - steps through the operator and everything beneath it in the Simulation pane
  • Call Tree and Properties - open those panes for the operator

Command bar ​

  • Flame Graph - breaks each operator down into the calls that made it up, see below. Available when Call Stack was captured, and on by default. Not available in a Full Trace, which switches it off
  • Annotations - adds badges to the operators something notable applies to. For a columnstore scan that is Aggregate Pushdown and Local Aggregation, Compressed Filter where a predicate was evaluated without decoding the segment, Predicate Pushdown, Segment Elimination, Global Dictionary, Deep Data for values too wide for a vector slot,, Fast Comparison, and SIMD with the instruction set it used. Elsewhere, Row Goal, Row Mode for a row mode operator over batch mode input, Over Grant where an operator used more memory than it was granted, and Untranslated Predicate where the trace cannot evaluate a predicate. The toggle is remembered between sessions
  • Properties - opens a pane beside the plan with the selected operator's properties from the plan, grouped - Operator, Optimizer, Storage, Predicates, a group for the operator's own work such as Hash or Nested Loops, I/O Statistics, Memory Grant where it had one, Event Statistics, Defined Values and Output Columns. The button on its header docks it to the right or the bottom

Flame Graph ​

When Call Stack events are captured, the Flame Graph toggle on the command bar replaces each operator's progress bar with an icicle chart of the calls made by that operator, coloured by the same category colours as the Call Tree - showing where an operator actually spent its time, not just its overall cost:

Execution Plan with Flame Graph enabled