> This thread on performance and database usage has been > absolutely enlightening. I've been working on different parts > of the code and haven't had the time to really sit down and > understand the database usage patterns.
Btw, I've noticed a few redundand indexes, at least as far as PG is concerned. CREATE INDEX dbmail_mailboxes_owner_idx ON dbmail_mailboxes(owner_idnr); CREATE INDEX dbmail_mailboxes_name_idx ON dbmail_mailboxes(name); CREATE UNIQUE INDEX dbmail_mailboxes_owner_name_idx ON dbmail_mailboxes(owner_idnr, name); dbmail_mailboxes_owner_idx is made redundant by dbmail_mailboxes_owner_name_idx. And I suspect dbmail_mailboxes_name_idx would never be used, unless there are queries which only does: select ... where name='...'; without a where on owner_idnr. CREATE INDEX dbmail_messages_status_idx ON dbmail_messages(status); CREATE INDEX dbmail_messages_status_notdeleted_idx ON dbmail_messages(status) WHERE status < '2'; dbmail_messages_status_notdeleted_idx is made redundant by dbmail_messages_status_idx. CREATE INDEX dbmail_messageblks_physmessage_idx ON dbmail_messageblks(physmessage_id); CREATE INDEX dbmail_messageblks_physmessage_is_header_idx ON dbmail_messageblks(physmessage_id, is_header); dbmail_messageblks_physmessage_idx is made redundant by dbmail_messageblks_physmessage_is_header_idx. In short, everyone should do: DROP INDEX dbmail_mailboxes_owner_idx; DROP INDEX dbmail_mailboxes_name_idx; DROP INDEX dbmail_messages_status_notdeleted_idx; DROP INDEX dbmail_messageblks_physmessage_idx; Kind Regards, John