> 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

Reply via email to