As described here: https://devcenter.heroku.com/articles/postgresql-indexes#managing-and-maintaining-indexes indexes do not store the entire row data themselves. Is it possible to store the whole row in the index for fast retrieve? I don't care about space.
Of course, you can create an index which would contain all columns from the rows.
From PostgreSQL 9.2 there is a possibility that this will speed up certain
Also, maintaining such an index is quite expensive when it comes to DML statements - I would say that it doubles the number of writes for every such statement.