az sql db show --resource-group <resource-group> --server <sql-server> --name <database> --output jsonSQL Query Store
Microsoft Learn describes Query Store as a SQL feature that captures a history of queries, execution plans, and runtime statistics for review. It helps troubleshoot performance changes, especially regressions caused by plan changes, and is available across SQL Server, Azure SQL Database, Azure SQL Managed Instance, and related SQL platforms.
Source: Microsoft Learn - Monitor performance by using the Query Store Reviewed 2026-05-25
- Exam trap
- Assuming Query Store proves the whole database is slow instead of using it to isolate specific query and plan behavior.
- Production check
- Confirm Query Store is enabled and has enough retention to cover the incident or release window.
Article details and learning context
- Aliases
- Query Store, Azure SQL Query Store, SQL Server Query Store, query performance history
- Difficulty
- intermediate
- CLI mappings
- 5
- Last verified
- 2026-05-25
- Review level
- field-manual-complete
- Article depth
- template-specs-five-use-cases-three-case-studies
Understand the concept
In plain English
SQL Query Store is a built-in SQL feature that remembers how queries performed over time. Instead of guessing why a query became slow after a release, statistics update, or index change, DBAs can compare query plans, runtime intervals, duration, reads, CPU, waits, and forced plan state. It is like a flight recorder for query behavior. It does not replace application telemetry or full observability, but it gives database teams evidence when a specific query changes plan or starts consuming more resources.
Why it matters
This term matters because many production incidents are not caused by the database being universally slow; they are caused by one important query choosing a worse plan or consuming more resources than before. Query Store lets teams compare before and after behavior instead of arguing from memory. It supports faster triage, safer release validation, and better tuning decisions. It can also prevent unnecessary scaling by proving that the bottleneck is plan shape, missing indexing, or parameter-sensitive behavior. The operational discipline is to keep Query Store configured with enough retention, review forced plans, and connect findings to application symptoms. Measure it.
Technical context
In Azure architecture, SQL Query Store lives inside the SQL database engine and supports the database performance layer. Azure SQL Database commonly uses Query Store for performance insight, automatic tuning, and plan-regression troubleshooting. It complements Azure Monitor metrics, diagnostic settings, Intelligent Insights, and application logs. Query Store data is inspected with SQL views, tools such as SQL Server Management Studio, and sometimes linked to Azure evidence gathered by CLI. Its scope is the database workload, not the entire application stack or network path.
Exam context
Compare with
Where it is used
Where you see it
- In the Azure SQL Query Store views, where DBAs inspect top queries, runtime intervals, plan choices, waits, regressions, and forced plan state after releases finish.
- In SQL scripts and troubleshooting notebooks, where sys.query_store views expose query IDs, plan IDs, execution statistics, and runtime windows for analysis during production incidents.
- In post-release dashboards, where Query Store evidence is compared with Azure Monitor metrics to decide whether a deployment introduced a plan regression or tuning opportunity.
Common situations
- Find the query plan that changed after a deployment and temporarily force the previous stable plan while developers fix the query.
- Compare before-and-after query behavior when an index change helps one path but slows another important business transaction.
- Prove that slow application screens come from a few regressed queries rather than general database capacity exhaustion.
- Review top resource-consuming queries weekly so tuning work is prioritized by measured workload impact instead of anecdotes.
- Support automatic tuning and performance recommendations with historical query evidence that can be reviewed by DBAs.
Illustrative Azure scenarios
These examples show how the concept can affect design and operations. They are illustrative scenarios, not customer claims.
Scenario 01 Game studio reverses a leaderboard regression Scenario, objectives, solution, measured impact, and takeaway.
A multiplayer game studio released a new leaderboard filter before a weekend tournament. The leaderboard endpoint slowed sharply, and players began seeing stale rankings.
- Identify whether the slowdown came from plan regression or increased player traffic.
- Restore P95 leaderboard response under two seconds before the final round.
- Avoid rolling back the entire event release.
- Document the fix so the query is monitored in later tournaments.
The DBA reviewed SQL Query Store for the leaderboard database and compared the six-hour window before and after deployment. Query Store showed the same query ID using a new plan with far higher reads. Azure Monitor metrics confirmed CPU rose after the plan change, but connection counts were within the expected tournament range. The team forced the previous good plan as a temporary mitigation, then developers changed the filter predicate and indexing strategy during the next sprint. The forced plan was reviewed daily and removed after the permanent query fix tested successfully.
- P95 leaderboard response fell from 9.8 seconds to 1.6 seconds before the final round.
- Player support complaints about stale rankings dropped by 74 percent that weekend.
- The release stayed live because only the regressed query was mitigated.
- The postmortem added Query Store comparison to every event-readiness checklist.
SQL Query Store helps teams fix the query behavior that changed instead of rolling back an entire release under pressure.
Scenario 02 Telemedicine portal diagnoses appointment search slowdown Scenario, objectives, solution, measured impact, and takeaway.
A telemedicine provider saw appointment search slow after adding a provider-specialty filter. Clinics reported that front-desk staff were waiting several seconds between patient calls.
- Separate real patient demand from a query plan regression.
- Restore appointment search under the two-second clinic service target.
- Avoid adding database compute before proving the bottleneck.
- Give developers exact query and plan evidence for remediation.
DBAs used SQL Query Store to compare appointment search runtime before and after the filter release. The same query had shifted from a selective seek to a broad scan when parameters varied by specialty and region. Azure CLI output showed no recent scale change or failover, and Azure Monitor metrics aligned with the Query Store regression window. The team forced the previous stable plan for the next clinic day, then developers added a filtered indexing strategy and changed the query shape. The forced plan was removed only after the corrected query passed a production canary.
- Appointment search P95 improved from 7.2 seconds to 1.4 seconds.
- The planned emergency scale-up was canceled after Query Store proved a plan issue.
- Clinic call handling returned to the previous twelve-patient-per-hour baseline.
- Developers received query ID and plan ID evidence instead of vague performance complaints.
Query Store turns a stressful user complaint into a specific query, plan, and time window that can be fixed safely.
Scenario 03 Agricultural marketplace validates pricing index change Scenario, objectives, solution, measured impact, and takeaway.
An agricultural marketplace changed an index used by crop pricing searches. Some growers saw faster bids, while grain buyers reported slower contract lookups.
- Measure query behavior before and after the index change across buyer and grower paths.
- Keep contract lookup latency inside the trading desk target.
- Decide whether to keep, alter, or roll back the index change.
- Give product owners evidence beyond mixed user feedback.
The database team used SQL Query Store to compare pricing searches and contract lookup queries across time windows before and after deployment. The new index helped grower bid searches but encouraged a worse plan for buyer contract lookups with older season data. DBAs adjusted included columns, updated statistics, and tested the revised plan during a limited trading window. Azure Monitor metrics and application telemetry were aligned with Query Store intervals so operations could see which user path changed and when the corrected plan stabilized.
- Grower bid search remained 31 percent faster after the index adjustment.
- Buyer contract lookup P95 returned from 5.9 seconds to 1.8 seconds.
- The team avoided rolling back the entire pricing release.
- Product review time fell from two days of log analysis to one Query Store comparison meeting.
SQL Query Store is especially valuable when one tuning change helps one path and hurts another, because it shows both outcomes clearly.
Azure CLI
With ten years of Azure engineering experience, I do not expect Azure CLI to replace Query Store views or SQL tuning tools. I use CLI around SQL Query Store to capture the Azure context around the database: resource ID, service tier, metrics, operations, diagnostic settings, and tags. That context matters when a plan regression appears after a deployment or scale change. CLI also helps automate evidence collection for incident records and confirms whether the database environment matches the troubleshooting notebook. The query details still come from SQL, but CLI proves where the database sits, what changed, and how Azure metrics aligned.
Useful for
- Capture Azure database SKU, status, and resource ID before starting Query Store investigation in SQL tools.
- Export CPU, DTU, or vCore metrics for the same window being reviewed in Query Store runtime intervals.
- List recent database operations to correlate plan regressions with scale changes, failovers, index jobs, or deployments.
- Check diagnostic settings and Log Analytics destinations when Query Store findings must be tied to operational monitoring.
- Inventory databases that need Query Store review by owner tag, service tier, or recent incident history.
Before you run a command
- Confirm subscription, resource group, server, database, and the exact incident or release time window to correlate with Query Store.
- Use CLI for Azure context and SQL tools for Query Store views; do not expect CLI to return query plan details directly.
- Check permissions for database metadata and Azure monitoring because separate roles may be needed for complete evidence.
- Avoid changing forced plans or Query Store settings without a rollback plan and DBA approval.
- Use JSON output and consistent timestamps so Azure metrics align with Query Store runtime intervals.
What the output tells you
- Database SKU and status show whether capacity or availability changed during the same window as the plan regression.
- Metric output helps compare CPU, IO, DTU, or worker pressure with Query Store runtime statistics.
- Operation history shows whether deployments, scaling, failovers, restores, or maintenance align with changed query behavior.
- Diagnostic setting output tells you where Azure-side logs and metrics can be reviewed alongside Query Store evidence.
Mapped commands
SQL Query Store CLI context collection
adjacentaz monitor metrics list --resource <database-resource-id> --metric cpu_percent,dtu_consumption_percent,storage_percent --interval PT5M --output jsonaz sql db op list --resource-group <resource-group> --server <sql-server> --database <database> --output tableaz monitor diagnostic-settings list --resource <database-resource-id> --output jsonaz sql db list --resource-group <resource-group> --server <sql-server> --query "[].{name:name,status:status,sku:sku.name}" --output tableArchitecture context
Architecturally, SQL Query Store is the evidence layer for database tuning. I design operational workflows so Query Store baselines are reviewed before risky releases, after index changes, and during performance incidents. It should be paired with Azure Monitor for resource pressure, application telemetry for user impact, and deployment history for timing. Query Store can support automatic tuning, but teams should define who may force plans, how long forced plans remain, and when they must be revisited. In estates with many databases, the architecture should standardize retention, cleanup, review cadence, and escalation paths for plan regressions. Clarify tuning ownership early. Define escalation rules.
- Security
- Security impact is indirect. Query Store does not grant access or expose a network endpoint, but it stores performance metadata that can reveal table names, query patterns, procedure names, and business activity timing. Access should be limited to DBAs, performance engineers, and approved operators who need tuning evidence. Forced plans and Query Store configuration changes can affect production behavior, so they should follow change control. Operators should avoid exporting query text into broad channels or tickets without considering sensitivity. The security principle is simple: treat query performance evidence as operational data with business context, not harmless trivia. Restrict reader access.
- Cost
- Cost impact is mostly indirect. Query Store can prevent unnecessary scale-ups by proving that a small number of regressed queries caused resource pressure. It also reduces expensive incident time because DBAs can find plan changes faster. There can be storage and operational cost if Query Store retention, capture mode, or cleanup is poorly managed, especially in very busy databases. Forced plans that hide deeper issues can create longer-term tuning debt. FinOps teams benefit when Query Store evidence shows whether performance spend should go to compute, indexing, code change, or workload scheduling instead of guessing. Track avoided scale changes monthly. Measure incident effort.
- Reliability
- Reliability impact is direct during performance incidents. Query Store can reveal whether a release, statistics change, index change, or parameter pattern caused a new plan to hurt a critical workload. That evidence lets teams force a known good plan temporarily, roll back a targeted change, or tune the exact query instead of restarting services blindly. Reliability still requires discipline: forced plans can become stale, Query Store can enter read-only mode if storage limits are hit, and retention may be too short. Operators should monitor Query Store health and review forced plans after incidents. Review forced plans after every incident. Retest after fixes.
- Performance
- Performance impact is both diagnostic and operational. Query Store enables faster identification of plan regressions, top resource consumers, and workloads whose runtime changed over time. It supports targeted tuning, plan forcing, and validation of index or code changes. The feature itself must be configured responsibly so capture mode, retention, and cleanup do not become noisy or storage-heavy for the database. Operators should review Query Store health and avoid leaving forced plans forever. The performance win is not that Query Store makes every query faster automatically; it makes the right query visible enough to fix. Compare runtime intervals before tuning. Review capture mode.
- Operations
- Operators use SQL Query Store during incident triage, release validation, tuning reviews, and postmortems. They inspect top queries by duration, CPU, reads, waits, execution count, and plan changes. They compare time windows before and after a deployment, force or unforce plans when approved, and document query IDs, plan IDs, and runtime statistics. In Azure, they correlate Query Store findings with service tier, metrics, automatic tuning, and diagnostic logs. A good runbook explains how to identify a regression, decide whether forcing a plan is temporary, and remove the force after a permanent fix. Schedule regular reviews for forced plans. Document query owner decisions.
Common mistakes
- Assuming Query Store proves the whole database is slow instead of using it to isolate specific query and plan behavior.
- Leaving a forced plan in place forever after an incident, even after data distribution, indexes, or query code changes.
- Using Azure metrics alone and missing that a plan regression caused the resource spike.
- Keeping retention too short, which erases the before window needed to compare a release or incident.