Why databases back GraphQL - Performance Analysis
When GraphQL queries ask for data, databases do the heavy lifting to find and return that data.
We want to understand how the time to get data grows as the amount of data or query size grows.
Analyze the time complexity of this GraphQL query backed by a database.
query {
users {
id
name
posts {
id
title
}
}
}
This query asks for all users and their posts. The database fetches users, then for each user fetches their posts.
Look at what repeats when the database answers this query.
- Primary operation: Fetching each user and then fetching posts for each user.
- How many times: Once for each user, then once for each post list per user.
As the number of users and posts grows, the work grows too.
| Input Size (n users) | Approx. Operations |
|---|---|
| 10 | Fetch 10 users + posts for each user |
| 100 | Fetch 100 users + posts for each user |
| 1000 | Fetch 1000 users + posts for each user |
Pattern observation: The total work grows roughly with the number of users and their posts combined.
Time Complexity: O(u + p)
This means the time grows with the number of users (u) plus the total number of posts (p) fetched.
[X] Wrong: "Fetching nested data like posts for users is always just O(u)."
[OK] Correct: Because each user's posts add extra work, so the total depends on both users and posts, not just users.
Understanding how database queries grow with data size helps you explain performance in real projects and shows you think about efficiency.
"What if the query asked for only users without posts? How would the time complexity change?"