The following IMAP SORT with 2 sort criteria is very slow on an mdbox mailbox with lots of mails (more than 10,000) and an empty cache:
. SORT (ARRIVAL DATE) UTF-8 ALL
Each mail is opened when the SORT is executed, which is slow, given the number of mails in the mailbox.
Debug: Mailbox INBOX: UID 1003: Opened mail because: header stream <repeated for each mail>
Repeating the SORT opens all mails again and again:
Debug: Mailbox INBOX: UID 1003: Opened mail because: header stream <repeated for each mail>
If I just sort by ARRIVAL, the SORT is fast and I don't see any "Opened mail because" messages in the debug log.
. SORT (ARRIVAL) UTF-8 ALL
If I just sort by DATE, the first SORT is slow.
. SORT (DATE) UTF-8 ALL
The debug log looks like this:
Debug: Mailbox INBOX: UID 1003: Opened mail because: header Date (Mail has other cached fields, reset_id=1633683216) <repeated for each mail>
This fills the cache and if I sort by DATE again, the SORT is fast and I don't get any more "Opened mail because" messages in the debug log.
If I now repeat "SORT (ARRIVAL DATE)", the SORT is fast, the mails are not opened. If I clear the cache, "SORT (ARRIVAL DATE)" goes back to being slow, not filling the cache.
This doesn't seem right. "SORT (ARRIVAL DATE)" should also fill the cache to execute repeated SORTS faster, right?