-- Feed main query (covers >90% of all DB requests) CREATE INDEX idx_upload_event_created ON upload(event_id, created_at DESC) WHERE deleted_at IS NULL; -- A user's own uploads (quota check, "My Account") CREATE INDEX idx_upload_user ON upload(user_id) WHERE deleted_at IS NULL; -- Comments per upload CREATE INDEX idx_comment_upload ON comment(upload_id) WHERE deleted_at IS NULL; -- Like count per upload CREATE INDEX idx_like_upload ON "like"(upload_id); -- Hashtag filtering CREATE INDEX idx_upload_hashtag_hashtag ON upload_hashtag(hashtag_id); CREATE INDEX idx_hashtag_event_tag ON hashtag(event_id, tag); -- Session lookup (runs on every authenticated API request) CREATE UNIQUE INDEX idx_session_token_hash ON session(token_hash); -- Expired session cleanup CREATE INDEX idx_session_expires ON session(expires_at); -- User lookup for recovery flow CREATE INDEX idx_user_event_name ON "user"(event_id, display_name); -- Export job status CREATE UNIQUE INDEX idx_export_job_event_type ON export_job(event_id, type);