Audience note: while SQLite has much less per-query overhead, Active Record still allocates model objects and uses Ruby memory for each row, so N+1 elimination is still needed (unlike a hypothetical lightweight framework). Wrona agrees — in their tests simple N+1s with and without `includes` produced negligible differences for most requests, but you can't be reckless about over-fetching data; Active Record instantiation overhead remains.