I was (til now) under the assumption, that postgres would use unique indexes to prevent full table scans. It seems not to do so.
My example: parties
parties has an index parties_email_un. If you check the execution path with explain though, it will show you that it is not using the unique index. Only after I created a special index "create index parties_email_idx on parties (email)" did it use this index.
If I'm not utterly mistaken, the email get's looked up quite often in OpenACS. So maybe I missed some parameter to make sure postgres is using an index on the email column. Or maybe it is using the parties_email_un index, but explain does not say so.
OTOH, if I did not miss anything, I'd strongly suggest to get some indexes in place with postgres really soon now (e.g. within the 5.0 release), to make sure even the postgres version can scale (to a certain degree).