Add database indices to frequent queries #130
Merged
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.
🦑 This PR has not yet been fully tested as part of the release process, but I'm tracking the change so it isn't forgotten.
Purpose
Adds indices to columns that are commonly used as the WHERE clause in DAO queries in this codebase. Some tables, such as
downloads
, are very large and were performing very inefficient lookups.This is partial mitigation for the recent database-related downtime incident report (see slack).
How to test this
Build and test release with this migration. Use
EXPLAIN <query>
to verify that index is being used.Note: By reviewing the mysql slow query log, I've verified that this should cover most of the common slow query use cases. (downloads table was by far the worst offender across all query types)