Start here. This is the direct spoken answer to practice first.
Why this question matters
Data access can be a major memory source. EF Core tracking is useful for updates, but read paths often need a different shape.
EF Core tracking keeps entity instances in the DbContext change tracker so changes can be detected and saved. That is useful for updates, but it costs memory on large read-only queries. For read endpoints I would often use AsNoTracking and project only the fields needed for the response. I would also keep DbContext scoped to the request or unit of work so tracked entities are not retained longer than intended.