0
0
GraphQLquery~10 mins

Over-fetching and under-fetching problems in GraphQL - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Over-fetching and under-fetching problems
Client sends query
Server receives query
Server fetches data
Fetch too much data?
YesOver-fetching problem
Extra data sent
Fetch too little data?
YesUnder-fetching problem
Missing data, client needs more queries
Server sends response
Client receives data
Client sends a query, server fetches data. If server fetches more than needed, it's over-fetching. If less, it's under-fetching, causing extra queries.
Execution Sample
GraphQL
query {
  user(id: 1) {
    id
    name
    posts {
      id
      title
    }
  }
}
Client requests user info with posts; server fetches user and posts data accordingly.
Execution Table
StepActionData RequestedData FetchedProblem DetectedResult Sent
1Client sends queryUser id, name, posts (id, title)N/AN/AN/A
2Server processes queryUser id, name, posts (id, title)User id, name, posts (id, title, content)Over-fetchingUser id, name, posts (id, title, content)
3Client receives dataUser id, name, posts (id, title)User id, name, posts (id, title, content)Over-fetchingUser id, name, posts (id, title, content)
4Client sends queryUser id, nameN/AN/AN/A
5Server processes queryUser id, nameUser idUnder-fetchingUser id
6Client receives dataUser id, nameUser idUnder-fetchingUser id
7Client sends extra query for nameUser nameUser nameN/AUser name
8Client receives extra dataUser nameUser nameN/AUser name
💡 Execution stops after client receives all requested data, possibly after multiple queries if under-fetching occurs.
Variable Tracker
VariableStartAfter Step 2After Step 5After Step 7Final
Data FetchedNoneUser id, name, posts (id, title, content)User idUser id, nameUser id, name, posts (id, title, content)
Key Moments - 2 Insights
Why does the server sometimes send more data than the client asked for?
Because the server fetches extra fields (like 'content' in posts) not requested, causing over-fetching as shown in step 2 and 3 of the execution_table.
Why does the client need to send multiple queries sometimes?
When the server fetches less data than requested (under-fetching), the client must send extra queries to get missing fields, as seen in steps 5 to 8.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 2. What problem is detected?
AUnder-fetching
BOver-fetching
CNo problem
DSyntax error
💡 Hint
Check the 'Problem Detected' column at step 2 in the execution_table.
At which step does the client send an extra query due to under-fetching?
AStep 3
BStep 5
CStep 7
DStep 1
💡 Hint
Look for the step where the client sends an extra query after receiving incomplete data.
If the server fetched exactly the requested fields, how would the 'Data Fetched' value at step 2 change?
AIt would match the requested fields exactly
BIt would be empty
CIt would include extra fields
DIt would cause an error
💡 Hint
Compare 'Data Requested' and 'Data Fetched' columns at step 2 in the execution_table.
Concept Snapshot
Over-fetching: Server sends more data than client needs, wasting resources.
Under-fetching: Server sends less data, client must ask again.
GraphQL queries specify exactly what data is needed.
Proper server response avoids both problems.
Helps efficient data transfer and fewer requests.
Full Transcript
This visual execution shows how over-fetching and under-fetching happen in GraphQL. The client sends a query requesting specific fields. The server fetches data. If the server fetches extra fields not requested, it causes over-fetching, sending unnecessary data. If the server fetches fewer fields than requested, it causes under-fetching, forcing the client to send extra queries to get missing data. The execution table traces these steps, showing actions, data requested, data fetched, problems detected, and results sent. Variable tracking shows how fetched data changes over steps. Key moments clarify why extra data or extra queries happen. The quiz tests understanding of these steps. The snapshot summarizes the concept for quick review.