v1.5.0
What's New
Maximum Benefit Scoring (#215)
Plan analysis findings now include a maximum benefit percentage — the estimated max % of elapsed time that could be saved by addressing each finding. Findings are sorted by benefit across all outputs, so the most impactful issues appear first.
This addresses the core feedback from issue #215: big, complex plans produce too much noise, and the Info/Warning/Critical severity can feel arbitrary. With benefit scoring, a key lookup taking 0.1% of elapsed time won't overshadow a scan consuming 90%.
How it works:
- Each finding's benefit is calculated from the operator's actual self-time relative to statement elapsed time
- For estimated plans, the optimizer's cost percentage is used as a fallback
- Findings without a quantifiable benefit (e.g., local variables, OPTIMIZE FOR UNKNOWN) remain visible but sort below quantified findings
Scored rules in this release:
- Filter Operator, Spill, Key Lookup, RID Lookup, Scan With Predicate, Non-SARGable Predicate, Scan Cardinality Misestimate, Eager Index Spool (operator self-time)
- UDF Execution (UDF elapsed time)
- Nested Loops High Executions (inner-side elapsed time)
- Ineffective Parallelism / Parallel Wait Bottleneck (parallelism efficiency gap)
- Serial Plan, Memory Grant, High Compile CPU (statement-level heuristics)
- Row Estimate Mismatch (harmed operator time)
Visible in:
- Desktop app Properties panel and tooltips
- CLI text output:
[Warning] Scan With Predicate (up to 87% benefit): ... - HTML export: benefit badge on each warning
- JSON API:
max_benefit_percentfield on each warning - Web app at performancestudio.dev
Other changes since v1.4.3
- Wait stats as cross-cutting analysis signal in PlanAnalyzer
- Inline wait type labels and expanded wait stats coverage
- Query classification in triage card
- HTTPS plan sharing API
- Issue #178 round 3 feedback (items 17-25)
This is Stage 1 of the benefit scoring system. Future stages will add wait stats benefit allocation, cardinality root-cause attribution, and actionable fix suggestions.