One GraphQL request can hide a surprising amount of backend work. If a bookstore client asks for twenty books and their author names, the server might fetch the books once and then query the author service twenty more times. The response looks efficient from the client's perspective, but the server is doing a separate lookup for each book.
This chapter explains how that pattern develops, how batching and request-scoped caching address it, and how to verify the improvement without mistaking fewer database calls for a complete performance solution.