diff --git a/src/migrations/20260226_01_WgYAV-queryindex.py b/src/migrations/20260226_01_WgYAV-queryindex.py new file mode 100644 index 00000000..9eb5ed7c --- /dev/null +++ b/src/migrations/20260226_01_WgYAV-queryindex.py @@ -0,0 +1,42 @@ +""" +queryindex +""" + +from yoyo import step + +__depends__ = {'20260225_01_aW5Bu-add-leaderboard-performance-indexes'} + + +steps = [ + # Most critical: partial composite index on runs + step( + """ + CREATE INDEX IF NOT EXISTS idx_runs_valid_scores + ON leaderboard.runs (submission_id, runner, score) + WHERE NOT secret AND score IS NOT NULL AND passed; + """, + """ + DROP INDEX IF EXISTS leaderboard.idx_runs_valid_scores; + """ + ), + # Secondary: index on submission.leaderboard_id + step( + """ + CREATE INDEX IF NOT EXISTS idx_submission_leaderboard_id + ON leaderboard.submission (leaderboard_id); + """, + """ + DROP INDEX IF EXISTS leaderboard.idx_submission_leaderboard_id; + """ + ), + # Secondary: index on submission.user_id + step( + """ + CREATE INDEX IF NOT EXISTS idx_submission_user_id + ON leaderboard.submission (user_id); + """, + """ + DROP INDEX IF EXISTS leaderboard.idx_submission_user_id; + """ + ), +]