Start here. This is the direct spoken answer to practice first.
Overview
Connects one slow Python request to generated SQL, representative parameters, database plans, and measured validation.
I first identify whether the request runs too many statements or one genuinely slow statement. For the slow statement, I capture the generated parameterized SQL, its duration, returned row count, and representative parameter values without logging secrets. I then run the equivalent query safely against production-like data and inspect an actual execution plan, comparing estimated and observed rows, access paths, joins, sorts, and expensive row growth.