If you're joining in the application, why use a relational database?
So in a scenario where you have plenty of network IO being under utilized for your database, it's not unimaginable where joining in the application layer would be preferable.
join_users_and_widgets(
run_sql('select * from users where account_id = :1', req.account_id),
run_sql('select * from widgets'),
)
for example, where the db still enforces that `widgets.owner_id` is a fk to `users.id` say. And `join_users_and_widgets` only has to know the current version of the schema, all rows have the same columns as it were.Smaller install size? Smaller memory footprint? Schemaless?