Sobes.tech
Junior — Middle

How does the N+1 problem occur when using ORM?

sobes.tech AI

Answer from AI

The N+1 problem occurs when an ORM, while loading a collection of related objects, executes one query for the main entity (1), and then executes a separate query for each of the N related objects.

For example, if you have a list of users and want to get their addresses, the ORM might first execute a query to retrieve all users, and then execute a separate query for each user to get the address. This results in 1 (users) + N (addresses) queries.

This leads to a significant decrease in performance due to the large number of queries.

To avoid this problem, eager loading or joined queries with JOIN are used, for example, in SQLAlchemy:

users = session.query(User).options(joinedload(User.addresses)).all()

This allows loading users and their addresses with a single query.