Free, open-source SQL Server execution plan analyzer — cross-platform GUI + CLI with 30 analysis rules, missing index detection, SSMS extension. Built-in MCP server for AI-assisted plan review.
# Add to your Claude Code skills
git clone https://github.com/erikdarlingdata/PerformanceStudioA cross-platform SQL Server execution plan analyzer with built-in MCP server for AI-assisted analysis. Parses .sqlplan XML, identifies performance problems, suggests missing indexes, and provides actionable warnings — from the command line or a desktop GUI.
Built for developers and DBAs who want fast, automated plan analysis without clicking through SSMS.
Write queries with syntax highlighting and SQL keyword completion, connect to any SQL Server, and capture plans with one click.

Graphical plan tree with SSMS-style operator icons, cost percentages, row counts, and warning badges. The Plan Insights panel shows runtime summary, missing indexes, parameters, and wait stats at a glance.

Navigate stored procedures and batches with multiple statements. Click any statement in the grid to jump to its plan. Plan Insights shows parameters with compiled vs runtime values.

Hover over any operator for a detailed tooltip with costs, rows, I/O, timing, parallelism, and warnings. Click to open the full properties panel with per-thread timing, predicates, and more.


One-click text report with server context, warnings, wait stats, and expensive operators — ready to read or share.
No comments yet. Be the first to share your thoughts!

Side-by-side comparison of two plans showing cost, runtime, I/O, memory, and wait stat differences.

Fetch top queries by CPU, duration, logical reads, physical reads, writes, memory, or executions from Query Store and load their plans directly into the analyzer.

The minimap provides a high-level overview of the entire plan, allowing you to quickly navigate to areas of interest. Colored links between operators indicate accuracy ratio divergence, helping you identify where estimates are most off from actuals.

Ask Claude Code to analyze loaded plans, identify warnings, suggest indexes, and compare plans — all through the built-in MCP server.

Feed it a query plan and it tells you what's wrong:
Each warning includes severity (Info, Warning, or Critical), the operator node ID, and enough context to act on immediately.
Pre-built binaries are available on the Releases page:
| Platform | Download | |----------|----------| | Windows (x64) | PerformanceStudio-win-x64.zip | | macOS (Apple Silicon) | PerformanceStudio-osx-arm64.zip | | macOS (Intel) | PerformanceStudio-osx-x64.zip | | Linux (x64) | PerformanceStudio-linux-x64.zip |
These are self-contained — no .NET SDK required. Extract the zip and run.
macOS note: macOS may block the app because it isn't signed with an Apple Developer certificate. If you see a warning that the app "can't be opened," run this after extracting:
xattr -cr PerformanceStudio.app
Then open the app normally.
Clone and build:
git clone https://github.com/erikdarlingdata/PerformanceStudio.git
cd PerformanceStudio
dotnet build
To verify the build:
dotnet test tests/PlanViewer.Core.Tests # 37 tests should pass
dotnet run --project src/PlanViewer.Cli -- analyze --help
If you already have a .sqlplan file (saved from SSMS, Azure Data Studio, or another tool):
# JSON output (default) — full operator tree, suitable for automation
planview analyze my_query.sqlplan
# Human-readable text output
planview analyze my_query.sqlplan --output text
# Text output, warnings and missing indexes only (skip operator tree)
planview analyze my_query.sqlplan --output text --warnings-only
Connect to a SQL Server instance, run queries, and capture their execution plans automatically.
Quickest way — pass credentials directly:
# Capture an actual execution plan (the query WILL run)
planview analyze --server sql2022 --database AdventureWorks \
--login sa --password YourPassword \
--query "SELECT * FROM Sales.SalesOrderHeader WHERE OrderDate > '2024-01-01'" \
--trust-cert --output-dir ./results/
# Capture an estimated plan (safe for production — query is NOT executed)
planview analyze --server sql2022 --database AdventureWorks \
--login sa --password YourPassword \
--query "SELECT * FROM Sales.SalesOrderHeader" \
--estimated --trust-cert --output-dir ./results/
Using a .env file — drop a .env in your working directory to avoid repeating connection details:
# .env
PLANVIEW_SER