feat: 优化商品洞察相关代码逻辑、新增性能优化 SQL 并更新前端样式

This commit is contained in:
Peter
2026-03-23 18:01:13 +08:00
parent 6f962d67a2
commit e37e69511f
9 changed files with 263 additions and 35 deletions

View File

@@ -0,0 +1,33 @@
-- =============================================
-- 性能优化: 补全关键查询索引
-- 执行方式: 在 MySQL 中直接执行IF NOT EXISTS 保证幂等
-- =============================================
-- 1. 订单表: pay_time (大盘总览/趋势图/订货建议 的 WHERE 条件)
-- DDL 中已定义,此处兜底确保存在
CREATE INDEX idx_pay_time ON dwd_trade_order_detail(pay_time);
-- 如果已存在会报错,可忽略。或使用以下方式:
-- ALTER TABLE dwd_trade_order_detail ADD INDEX idx_pay_time(pay_time);
-- 2. 订单表: status (数据截止时间查询 WHERE status = 'TRADE_SUCCESS')
ALTER TABLE dwd_trade_order_detail ADD INDEX idx_status(status);
-- 3. 订单表: etl_update_time (客户聚合增量检测)
ALTER TABLE dwd_trade_order_detail ADD INDEX idx_etl_update_time(etl_update_time);
-- 4. 订单表: outer_item_id (商品洞察/订货建议 GROUP BY)
ALTER TABLE dwd_trade_order_detail ADD INDEX idx_outer_item_id(outer_item_id);
-- 5. 退款表: created_time (大盘总览退款额统计)
ALTER TABLE dwd_trade_refund_detail ADD INDEX idx_created_time(created_time);
-- 6. 退款表: etl_update_time (增量检测)
ALTER TABLE dwd_trade_refund_detail ADD INDEX idx_etl_update_time(etl_update_time);
-- 7. 客户表: etl_update_time (客户聚合增量检测)
ALTER TABLE dim_customer_info ADD INDEX idx_etl_update_time(etl_update_time);
-- 验证索引:
-- SHOW INDEX FROM dwd_trade_order_detail;
-- SHOW INDEX FROM dwd_trade_refund_detail;
-- SHOW INDEX FROM dim_customer_info;

View File

@@ -42,6 +42,9 @@ CREATE TABLE `dwd_trade_order_detail` (
KEY `idx_tid` (`tid`),
KEY `idx_pay_time` (`pay_time`),
KEY `idx_update_time` (`update_time`),
KEY `idx_etl_update_time` (`etl_update_time`),
KEY `idx_status` (`status`),
KEY `idx_outer_item_id` (`outer_item_id`),
KEY `idx_buyer` (`buyer_phone`, `yz_open_id`),
KEY `idx_item_sku` (`item_id`, `sku_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易明细事实表 (T+1有赞同步)';
@@ -79,7 +82,8 @@ CREATE TABLE `dim_customer_info` (
UNIQUE KEY `uk_yz_open_id` (`yz_open_id`),
UNIQUE KEY `uk_mobile` (`mobile`), -- 可空唯一: MySQL 允许多个 NULL, 有手机号则保证不重复
KEY `idx_wx_union_id` (`wx_union_id`),
KEY `idx_last_pay_time` (`last_pay_time`)
KEY `idx_last_pay_time` (`last_pay_time`),
KEY `idx_etl_update_time` (`etl_update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统一客户维度宽表 (OneID及基础RFM视角)';
-- ==========================================
@@ -170,7 +174,9 @@ CREATE TABLE `dwd_trade_refund_detail` (
PRIMARY KEY (`id`),
UNIQUE KEY `uk_refund_id` (`refund_id`),
KEY `idx_tid` (`tid`),
KEY `idx_created_time` (`created_time`),
KEY `idx_success_time` (`success_time`),
KEY `idx_etl_update_time` (`etl_update_time`),
KEY `idx_yz_open_id` (`yz_open_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='售后与退款明细表';