> SELECT o.id
> FROM order o
> JOIN customer c on o.customer = c.id
>
> Does that bring into memory all columns from both order and customer?
> Maybe that's not a good example due to indexes.
No, it just pulls the columns you ask from the table, nothing less,
nothing more.
Splitting tables (vertical partitioning) is used to reduce the size of
the working set that has to fit in RAM... this is a different reason than
what you're thinking about.