Start here. This is the direct spoken answer to practice first.
Overview
N+1 is proved by repeated query shape per parent row, not by guessing from a slow endpoint.
N+1 happens when one query loads a set of parent rows and accessing an association issues another query for each parent. I reproduce the request with representative data, enable safe SQL statistics or tracing, and count statements by shape. The fix is use-case specific: project the required DTO, use a fetch join or entity graph, or configure batch fetching. Then I verify both query count and returned row volume.