On Wed, 2009-02-04 at 02:15 -0800, wstrzalka wrote: > Isn't it possible to sort only fields that order matters & some row > identifier/position (don't really know what - oid/ctid are tight to > table but something temporary tight to 'resultset')? It would take > much less memory and could be processed in the work_mem more often. ctid is not sufficient for all uses of Sort, because sometimes you are sorting tuples that don't come from a table. Consider sorting the results after a function has been applied to some other field -- how can you get the result of that function? What you're talking about is kind of like building an index on the fly. You might as well just make a BTree normally, which is exactly the kind of result structure you are suggesting: a sorted mapping between the sort key and the ctid. Even in the case where you already have an index, the index scan can actually be more expensive. The reason is that accessing tuples in a table by ctid is random access (except in the case of a clustered table), while pulling the tuples from an external sort is more sequential. If you are interested, you can take this discussion to pgsql-hackers. Regards, Jeff Davis -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general