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.