diff --git a/apps/api/migrations/000014_module_join_indexes.down.sql b/apps/api/migrations/000014_module_join_indexes.down.sql new file mode 100644 index 0000000..dfbde6b --- /dev/null +++ b/apps/api/migrations/000014_module_join_indexes.down.sql @@ -0,0 +1,4 @@ +DROP INDEX IF EXISTS idx_module_issues_module; +DROP INDEX IF EXISTS idx_module_issues_issue; +DROP INDEX IF EXISTS idx_module_members_module; +DROP INDEX IF EXISTS idx_module_links_module; diff --git a/apps/api/migrations/000014_module_join_indexes.up.sql b/apps/api/migrations/000014_module_join_indexes.up.sql new file mode 100644 index 0000000..2ae32a8 --- /dev/null +++ b/apps/api/migrations/000014_module_join_indexes.up.sql @@ -0,0 +1,8 @@ +-- The module join tables had no indexes, so every lookup by module_id or +-- issue_id did a sequential scan (ListModuleIssueIDs, RemoveModuleIssue, +-- CountIssuesByModuleIDs, ListMemberIDsByModuleIDs, the progress join, etc.). +-- The cycle join tables already have the equivalent indexes; add them here. +CREATE INDEX IF NOT EXISTS idx_module_issues_module ON module_issues (module_id); +CREATE INDEX IF NOT EXISTS idx_module_issues_issue ON module_issues (issue_id); +CREATE INDEX IF NOT EXISTS idx_module_members_module ON module_members (module_id); +CREATE INDEX IF NOT EXISTS idx_module_links_module ON module_links (module_id);