Optimize delete_expired_imap_messages()

For me this reduced query time from 0.3 s to 0.05 s.
This commit is contained in:
link2xt
2022-01-30 23:00:00 +00:00
parent 99ddce6c3e
commit cccdc51ad4
2 changed files with 11 additions and 6 deletions

View File

@@ -1,5 +1,11 @@
# Changelog
## Unreleased
### Changes
- optimize `delete_expired_imap_messages()` #3047
## 1.74.0
### Fixes

View File

@@ -451,12 +451,11 @@ pub(crate) async fn delete_expired_imap_messages(context: &Context) -> Result<()
.execute(
"UPDATE imap
SET target=''
WHERE EXISTS (
SELECT * FROM msgs
WHERE rfc724_mid=imap.rfc724_mid
AND ((download_state = 0 AND timestamp < ?) OR
(download_state != 0 AND timestamp < ?) OR
(ephemeral_timestamp != 0 AND ephemeral_timestamp <= ?))
WHERE rfc724_mid IN (
SELECT rfc724_mid FROM msgs
WHERE ((download_state = 0 AND timestamp < ?) OR
(download_state != 0 AND timestamp < ?) OR
(ephemeral_timestamp != 0 AND ephemeral_timestamp <= ?))
)",
paramsv![threshold_timestamp, threshold_timestamp_extended, now],
)