-
perf(plan): 预取消掉一个 O(患者数) 项 + 三条查询并行 · 66c54b46
① snooze 抑制集提到 chunk 循环外一次查完。 它的代价跟「终态且冷静期未到期的计划数」走,跟患者数无关 —— 2026-08-30 生产实测全库符合条件只有 **106 行**,而按 chunk 查要跑 274 次 (54.8 万患者 / 2000),**273 次在查空**。
🔴 这不是省常数,是消掉一个 O(患者数) 项:到 200 万患者原写法是 1000 次往返, 新写法仍是 1 次。生产百万级且在涨,这类项要按规模判断而不是按当下耗时。 索引 (status,…) 前导 status,completed/abandoned 是稀有态 → Bitmap 扫 42 buffers/0.6ms。 ② 余下三条(latest plan / persona / 末次到诊诊所)彼此独立,改 Promise.all 并行。 每 chunk 墙钟从「三条之和」降到「最慢那条」。并发度恒为 3,不随患者数涨, 不会挤爆 Prisma 池(默认 核数×2+1)。 口径零变化(三条都是只读、无共享状态;snooze map 只会被本批患者查到)。 本地实测:预取 8,383ms → 4,899ms;**plan_reasons 逐行 diff = 0**(39,225 行)。⚠ ️ 预取是纯性能路径,单测覆盖不到,所以靠真实数据端到端行级对拍来验。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| asr-sensevoice | Loading commit data... | |
| pac-docs | Loading commit data... | |
| pac-service | Loading commit data... | |
| pac-web | Loading commit data... |