IO and time statistics
NovaSql runs every query with SET STATISTICS IO, TIME ON. Instead of the long text output this produces in Management Studio, the Statistics tab presents the numbers as tables.
Per statement
For each statement:
- Parse + Compile: CPU and elapsed time for compiling the query
- Execution: CPU and elapsed time for running it
- one row per table read, with the columns below
| Column | Meaning |
|---|---|
| Scans | how often the table or index was traversed |
| Logical | 8 KB pages read from memory; the most important number |
| Physical | pages read from disk |
| Read-Ahead | pages loaded from disk in advance |
| LOB Logical / Physical / Read-Ahead | the same for large columns (varchar(max), xml …) |
| Page Server | Azure SQL Hyperscale only |
Each statement has a total row, and at the end comes the Grand total across all statements.
What the numbers tell you
Logical reads are the best measure of how much work a query does. They don't depend on whether the data happens to be cached, so they barely vary between two runs. An optimization worked if the logical reads go down.
Times, on the other hand, vary with the server's load. Physical reads mostly appear on the first run, when the data is not in memory yet.
Sharing
Copy as Markdown puts the statistics on the clipboard as a Markdown table, ready for a ticket, a pull request or a wiki.