model_meta.go
6.48 KB
-
🏎 ️ perf: optimize aggregated model look-ups by batching bound-channel queries · 0bcd7388Summary ------- 1. **Backend** • `model/model_meta.go` – Add `GetBoundChannelsForModels([]string)` to retrieve channels for multiple models in a single SQL (`IN (?)`) and deduplicate with `GROUP BY`. • `controller/model_meta.go` – In non-exact `fillModelExtra`: – Remove per-model `GetBoundChannels` calls. – Collect matched model names, then call `GetBoundChannelsForModels` once and merge results into `channelSet`. – Minor cleanup on loop logic; channel aggregation now happens after quota/group/endpoint processing. Impact ------ • Eliminates N+1 query pattern for prefix/suffix/contains rules. • Reduces DB round-trips from *N + 1* to **1**, markedly speeding up the model-management list load. • Keeps existing `GetBoundChannels` API intact for single-model scenarios; no breaking changes.t0ng7u committed