Something interesting to consider with N+1 queries, these warnings only really apply to remote database servers, as in not on the same machine.

If you are using SQLite, or another in process database, N+1 isn't an issue at all. So with the increased use of SQLite as an "edge" database it's something to consider.

"Many Small Queries Are Efficient In SQLite": https://www.sqlite.org/np1queryprob.html

Although the problem will be a lot less severe than with remote servers, this is still sub-optimal:

- the data passed from one query to the next still needs to move from the database process to the service process and back

- the queries will always be executed in the order they are in the code, denying the optimizer the opportunity to execute the full query in the best order

There is still also non-zero overhead associated with making queries in general, in both the querying and query-answering process.

The ceiling of the range where you can get away with this without user-visible performance impact will be much higher, and the relative performance difference may be smaller, but in general fewer queries for the same data will still be better in general.

Even with an in-process DB, you're still essentially making a sort of context switch.

Piling on about overhead (and SQLite), many high-level languages take some hit for using an FFI. So you're still incentivized to avoid tons of SQLite calls.

https://github.com/dyu/ffi-overhead