-- Author: fruit.com.cn -- K113 app_user_session 按「最近一次」平台筛选用户的索引。 -- -- selectUserIdsByLatestPlatform 用的是 DISTINCT ON (user_id) ... ORDER BY user_id, last_active_at DESC NULLS LAST, id DESC。 -- 原表只有 (user_id, revoked_at) 索引,DISTINCT ON + ORDER BY 退化成全表 Sort + Seq Scan, -- 500 行还行,10 万行就扛不住了。补一个匹配 ORDER BY 的部分索引:deleted = 0 覆盖逻辑删除。 -- -- 注意:CREATE INDEX CONCURRENTLY 不能在事务块里执行,这里直接跑,不加 BEGIN/COMMIT。 CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_session_user_latest ON app_user_session (user_id, last_active_at DESC NULLS LAST, id DESC) WHERE deleted = 0;