Brent Ozar shares a surprise if you’re coming from the SQL Server world:
Postgres starts with a very different assumption: it uses multi-version concurrency control (MVCC, or what SQL Server folks call RCSI) by default, right from the get-go. When we update rows, Postgres automatically makes new versions of the rows, storing them inside the same table. There’s no need to enable it – it’s on for all databases, by default.
So because Postgres is constantly creating new versions of rows, it doesn’t really make sense to store the table itself in some kind of order.
Every table is a heap.
This fundamental storage difference has some ramifications for query tuning and indexing strategy that makes the two platforms quite different.