Compare a good and a bad plan in Query Store using runtime history, SSMS Compare Showplan, estimates, joins, grants, and parallelism.
SQL SERVER – MemoryGrantInfo Property Explanation
I have been writing about the Memory Grant Feedback feature. Today we will discuss various properties of MemoryGrantInfo in this blog post.
Stop Memory Grant Feedback: Database Setting and Query Hint
To stop memory grant feedback, use the hint or the setting that matches the mode of the plan. A tested demo shows that a row mode hint keeps a grant at 13,256 KB, while a batch mode hint changes nothing for a row mode sort. The post also corrects the setting names and shows the persistence switch.
Memory Grant Feedback Loop: When SQL Server Stops Adjusting
The memory grant feedback loop adjusts a grant after every run, and a query whose needs swing can send it back and forth. In a tested demo SQL Server stops adjusting on run 33 and falls back to its first grant. The post also shows what SQL Server 2025 does by default.
IsMemoryGrantFeedbackAdjusted Values: What Each Status Means
IsMemoryGrantFeedbackAdjusted values tell you what SQL Server did with the memory grant of one run. A tested demo produces every status: first execution, accurate grant, adjusting, stable, percentile adjusting and feedback disabled. The post also shows which run each status appears on.
Memory Grant Feedback Explained: How SQL Server Learns
Memory grant feedback explained with one small demo. A sort asks for 13256 KB, uses 160 KB, and gets a corrected grant of 1536 KB on the next run. The post also shows how to read the status in the plan and what the feature needs.
Locally Aggregated Rows: Why a Columnstore Scan Shows Zero
A columnstore scan shows zero actual rows when it aggregates rows itself, and the rows sit in the locally aggregated rows property. A tested demo on 1,000,000 rows shows 0 actual rows and 1,000,000 locally aggregated rows. The post also covers a scan that really is empty, and what STATISTICS IO counts.







