Add indexes to improve join table performance#6645
Open
jhenderson wants to merge 1 commit intonextfrom
Open
Conversation
Poor performance has been noted when deleting records, particularly in the bulk-remove parents flow and when bulk-deleting vaccination records. A likely cause is that some join tables are only indexed in one direction, which can make deletion queries slower. Jira-Issue: MAV-6735
thomasleese
approved these changes
Apr 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Poor performance has been noted when deleting records in Mavis, particularly in:
A likely cause is that some join tables are only indexed in one direction. That means queries which delete or clean up rows via the associated record side of the join can be slower than necessary.
This change adds reverse indexes for the join tables involved in those deletion paths.
These are the delete paths in the job:
manage-vaccinations-in-schools/app/jobs/bulk_remove_parent_relationships_job.rb
Line 42 in 92fa6b8
manage-vaccinations-in-schools/app/jobs/bulk_remove_parent_relationships_job.rb
Line 45 in 92fa6b8
The reverse index on
immunisation_imports_vaccination_recordsshould improve performance when deleting vaccination records linked to immunisation imports, by making it faster to locate and remove the related join-table rows. This is relevant to the bulk cleanup work discussed in MAV-2997.Jira Issue - MAV-6735