All you said are wright. But it 's not so difficult for postgresql to hold
on a bit attribute attached to each table the information, whether there
is done an insertion/deletion/update to a clustered table or not.
And i guess, postgresql would already implement this simply alternative.
> Easy, if you CLUSTER a table, it's CLUSTERed then. But it doesn't stay
> that way. As soon as you insert a new row, or update an old one, it
> gets added to the end (the only place with space) and now it's not
> clustered anymore. It's almost clustered and from a caching point of
> view it's fine. But postgresql can't assume at any point a table will
> stay clustered, an insert could happen in the middle of your
> processing.
>
> Logically you can't magically add space in the middle of a file, you
> have to move everything else up. If you know an efficient way to keep a
> table clustered while handling arbitrary inserts and updates, I'd be
> curious to know...