-- Migration 017: Composite indexes for `who` query paths -- Expert/Overlap: DiffNote path prefix + timestamp filter. CREATE INDEX IF NOT EXISTS idx_notes_diffnote_path_created ON notes(position_new_path, created_at, project_id) WHERE note_type = 'DiffNote' AND is_system = 0; -- Active/Workload: discussion participation lookups. CREATE INDEX IF NOT EXISTS idx_notes_discussion_author ON notes(discussion_id, author_username) WHERE is_system = 0; -- Active (project-scoped): unresolved discussions by recency, scoped by project. CREATE INDEX IF NOT EXISTS idx_discussions_unresolved_recent ON discussions(project_id, last_note_at) WHERE resolvable = 1 AND resolved = 0; -- Active (global): unresolved discussions by recency (no project scope). CREATE INDEX IF NOT EXISTS idx_discussions_unresolved_recent_global ON discussions(last_note_at) WHERE resolvable = 1 AND resolved = 0; -- Workload: issue assignees by username. CREATE INDEX IF NOT EXISTS idx_issue_assignees_username ON issue_assignees(username, issue_id); INSERT INTO schema_version (version, applied_at, description) VALUES (17, strftime('%s', 'now') * 1000, 'Composite indexes for who query paths');