@sribe really nice job on spotting this.
Preload can be harmful. If you do a query with 10 entries but those entries have a direct relationship to 1 million records, then the preload will bring all of those in.
I also would like to add that Ecto 3.0 should allocate less memory, as we do a bigger effort to share common fields, such as Ecto metadata, but if you are attempting to bring a large number of records, there is no amount memory optimization that can save you.