Documentation Index

Fetch the complete documentation index at: https://docs.fortifiedwisdom.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview - Query Analysis

Prev Next

The Overview tab summarizes cost and efficiency across the full workload in scope. It's the starting point for finding what to optimize, before drilling into a specific query on Details.

Use the calendar widget to change the date range. The default range is the last seven (7) days, and can be extended to up to ninety (90) days of history. The selected range is displayed on the card toolbar.

Selecting a specific time range also allows the data to be manually compared against other similar ranges, such as the same range in a different week or month, to evaluate how a workload's cost and performance has changed over time.

Use the Filters panel to change what is displayed. Filters can be combined, and each shows a count of available values in parentheses.

Filter Narrows to
Instance One or more specific SQL Server instances.
Database One or more specific databases.
Query Execution Duration buckets: 0–10ms, 10–100ms, 100ms–1s, 1–10s, 10s+. This is the average duration per run of the query over the selected time range, not accumulated across all runs.
Query CPU Usage CPU time buckets, using the same ranges as Query Execution: 0–10ms, 10–100ms, 100ms–1s, 1–10s, 10s+. This is the average CPU time per run of the query over the selected time range, not accumulated across all runs.
Query IO Usage IO buckets: 0–6, 6–30, 30–100, 100–1000, 1000+. This is the average IO per run of the query over the selected time range, not accumulated across all runs, so it can be used to find queries that are IO-heavy on any single run, as well as "death by a thousand cuts" queries that run a modest amount of IO per execution but at very high frequency.
Observations One or more of the eight Observation flags described below.
Recommended Optimization Yes or No, to narrow to SQL Statements that have an optimization recommendation available.

The Tag filters are also available from the toolbar, separate from the Filters panel. For additional information about using the Tag Filtering, see Tools > Tag Filter page.

KPI Summary

Four cards summarize the workload for the selected filters and time range.

Card Description
Annual Code Spend Estimated annual cost of the full workload in scope.
Top 10 Code Spend Dollar amount and percentage of total spend attributed to the ten most expensive SQL Statements.
Optimizations Ready Count of WISdom-identified optimization opportunities available for the workload in scope.
Optimization Credits Optimization credits used against the account's annual allotment.

Optimizations Ready reflects WISdom's automated background scan of the top code by CPU consumption. See Optimizations for how candidates are selected, how credits work, and how to request optimization for a specific query.

Spend Concentration

The Spend Concentration card shows how concentrated cost, CPU, or IO is across the workload. Use the Spend, CPU, and IO toggle to change which metric is plotted.

The card reports the cumulative percentage of the selected metric and the associated dollar figure attributed to the top 10, top 50, top 100, top 500, and top 1000 SQL Statements by that metric. A workload where a small number of statements account for most of the spend is a strong candidate for targeted optimization; a flatter curve indicates cost is spread evenly across many statements.

Typical concentration

Across most environments, the top 10% of code accounts for roughly 90% of resource utilization and spend, so a small number of optimizations can have an outsized impact on overall cost.

Execution Time Distribution

The Execution Time Distribution card groups executions into latency buckets: 0 to 10 ms, 10 to 100 ms, 100 ms to 1 second, 1 to 10 seconds, and 10 seconds or more. Use the Spend, CPU, and IO toggle to change which metric is shown for each bucket. As with the Query Execution and Query CPU Usage filters, these buckets reflect the average duration per run of a query over the selected time range, not duration accumulated across all runs.

Each bucket displays the percentage and dollar amount of the selected metric attributed to executions falling in that latency range.

Top Spend, Top CPU, Top IO

This chart plots the leading SQL Statements by the selected metric (Spend, CPU, or IO) and reports what percentage of total spend the displayed queries represent.

Query Impact Analysis

This table groups result sets by SQL Statement (default) in a searchable, sortable format.

Use the Group By menu to change how the table is organized:

Group By Displays
Default One row per unique SQL Statement across all instances and databases where it has executed.
Instance The workload grouped by instance, with columns for Database, Object, SQL Statement, Cost, Executions, CPU, IO, and Efficiency.
Database The workload grouped by database, with columns for Instance, Object, SQL Statement, Cost, Executions, CPU, IO, and Efficiency.
Object The workload grouped by object, with columns for Cost, Executions, CPU, IO, and Efficiency.

Columns in the default view include Instances, Annual Spend, % of Spend, Savings, Duration, CPU, IO, Executions, and Observations.

The Observations column flags conditions detected for that SQL Statement:

Observation Meaning
Inefficient Query The query performs a high number of page reads relative to the number of rows it impacts or returns.
High Variance The query returns a highly variable number of rows on each run, determined by the spread between the minimum and maximum rows impacted.
Un-optimizable The query either doesn't meet the criteria for optimization, or no optimizations are available for it.
Missing Indexes One or more indexes could be added or updated to improve query performance.
Inefficient Indexing Indexes exist but are returning too much data and need to be narrowed, or the table has too many unused indexes.
Inefficient Column Types A column's data type is preventing efficient indexing or comparison; it corresponds to the Column Type Modification recommendation type.
Stale Statistics A large number of changes have occurred to the table or its indexes since the statistics were last updated.
Query Rewrite The query could be rewritten to use better joins, conversions, or predicates that are not currently in use.

Drilling into a query

Behavior here depends on how the table is grouped.

Default grouping (one row per SQL Statement): selecting a row, anywhere other than the SQL Statement text itself, opens Details for that query and is equivalent to selecting the action icon on that row and choosing View Details.

Instance, Database, or Object grouping: each row represents a resource rather than a single query, so there's no action icon or View Details option at that level. Selecting the row, or its expander, expands it in place, still on Overview, to list the SQL Statements that ran under that resource. From that expanded list, rows behave the same as Default grouping: selecting one, or using its action icon, opens Details.

Selecting the action icon on a query-level row also provides:

  • View Index Analysis – opens the Index Analysis page with the instance and database of the selected row already applied as filters.
  • Open Query ROI – opens the Query ROI Planner in the Planners area with the query's resource utilization already applied.
Two different click behaviors

Clicking a SQL Statement value always opens a flyout showing the full statement text, with a button to copy it.

Clicking a Database or Instance value always opens a pop-up with options to copy the object name, or include or exclude it on the filter. This is consistent throughout WISdom, not just on Query Analysis.

Related Topics