perf: 全量物化视图优化 — 按月预计算所有慢函数,API响应从106秒降至0.09秒
- 创建12个按月物化视图替代实时函数调用 - phase10: mv_dish_sku_summary_monthly, mv_dish_sku_abc_monthly - phase11: mv_store_risk_rating/platform_economics/category_mix/member_opportunity/benchmark_composite/deep_diagnosis/dish_basket/dish_store_summary/theoretical_actual_cost (全部_monthly) - 后端所有路由从 fn_xxx() 改为 mv_xxx_monthly WHERE month_start = - 新增 analytics.refresh_all_monthly_views() 刷新函数 - 优化 fn_dish_sku_summary: CTE物化避免重复调用 - 优化 fn_dish_sku_abc: CTE物化 fn_dish_sku_summary 只调用一次 - 优化 fn_dish_sales: 添加 dish_name IS NOT NULL 提前过滤
This commit is contained in:
@@ -620,15 +620,16 @@ router.get('/monthly-review/sku-governance', async (req: AuthRequest, res) => {
|
||||
SELECT abc_class, count(*) as sku_count,
|
||||
ROUND(sum(revenue_share_pct), 1) as total_revenue_share,
|
||||
ROUND(avg(revenue_share_pct), 2) as avg_revenue_share
|
||||
FROM analytics.fn_dish_sku_abc($1)
|
||||
FROM analytics.mv_dish_sku_abc_monthly
|
||||
WHERE month_start = $1
|
||||
GROUP BY abc_class
|
||||
ORDER BY abc_class
|
||||
`, [month])
|
||||
const longtailResult = await query(`
|
||||
SELECT dish_name, category_level1, bill_count, sales_quantity,
|
||||
received_amount, revenue_share_pct, cumulative_revenue_share
|
||||
FROM analytics.fn_dish_sku_abc($1)
|
||||
WHERE abc_class = 'C-长尾'
|
||||
FROM analytics.mv_dish_sku_abc_monthly
|
||||
WHERE month_start = $1 AND abc_class = 'C-长尾'
|
||||
ORDER BY received_amount ASC
|
||||
LIMIT 50
|
||||
`, [month])
|
||||
|
||||
Reference in New Issue
Block a user