Interview kitsBlog

Your dream job? Lets Git IT.
Interactive technical interview preparation platform designed for modern developers.

XGitHub

Platform

  • Categories

Resources

  • Blog
  • About the app
  • FAQ
  • Feedback

Legal

  • Privacy Policy
  • Terms of Service

© 2026 LetsGit.IT. All rights reserved.

LetsGit.IT/Categories/Databases
Databaseshard

What is the N+1 query problem and how do you avoid it?

Tags
#n-plus-one#orm#performance
Back to categoryPractice quiz

Answer

It’s when you load N parent rows and then run one extra query per parent (N more queries). Avoid it with joins, batching, prefetching (eager loading), or separate “IN (...)” queries.

Advanced answer

Deep dive

N+1 is a classic ORM/performance problem: 1) query #1 loads a list of parent entities 2) for each parent, the ORM lazily loads a relation → N additional queries

It’s rarely visible in code, but obvious in SQL logs and APM traces.

How to avoid it

  • **Eager fetch / join fetch** for known relations (one query, but watch row explosion).
  • **Batching**: load children for many parents in one query using `IN (...)`.
  • **DataLoader pattern** (common in GraphQL): batch and cache per request.
  • **Precompute**: denormalize or use materialized views for read-heavy endpoints.

Practical guidance

  • Turn on query logging in dev and watch for repeated patterns.
  • Measure: sometimes a small N+1 is acceptable; large N+1 kills latency.

Common pitfalls

  • Fixing N+1 with a huge join that multiplies rows and increases memory/transfer.
  • Fetching relations you don’t need “just in case”.
  • Assuming indexes fix N+1 (they help each query, but you still pay N round trips).

Related questions

Databases
Denormalization: when might you do it and what’s the trade‑off?
#database#denormalization#performance
Databases
What is a covering index (index‑only scan) and why can it be faster?
#database#indexes#covering-index
Databases
Why can the optimizer choose a bad query plan and how do statistics help?
#optimizer#statistics#cardinality
Databases
Index selectivity: what is it and why does it matter?
#indexes#selectivity#performance
Databases
What is write amplification and why do many indexes make writes slower?
#performance#indexes#write-amplification
Databases
What is a materialized view and when would you use it?
#views#materialized-view#performance