Add new index for the unique constraint on imapuid #326
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Queries such as this one and this one have a high impact on IO, related to the elevated number of messages returned plus the data per row (as all the columns are fetched).
This situation could be mitigated by using a covering index on
("account_id", "folder_id", "msg_uid")
. Thing is, there's an index there already because of theUniqueContraint
which creates an index behind the scenes... just in the wrong order. By reordering it and leavingmsg_uid
as the last column on the index, the unique constraint should double as a covering index resulting in a significative reduction in IO (around 75%).This first migrations creates a new unique constraint (plus related index) using the new ordering. After that we'll use a second one to drop the old constraint.