optimize_xh_recharge_hd_stat.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. -- =============================================================================
  2. -- hdApp 充值记录/统计查询索引建议 - xhRecharge
  3. -- =============================================================================
  4. -- 当前查询形态:
  5. -- 1. /recharge/list:
  6. -- shopId + status,按 addTime DESC,id DESC 分页;
  7. -- 可选 customId / onlinePay + payWay / isRefund。
  8. -- 2. /recharge/stat:
  9. -- shopId + payStatus + status + addTime 时间范围;
  10. -- 按渠道或客户聚合,并用 isRefund 统计减少金额。
  11. --
  12. -- 当前表已有索引:
  13. -- PRIMARY(id), orderSn(orderSn), custom_status(customId,status),
  14. -- main_custom_status(mainId,customId,status)。
  15. -- 这些索引缺少 shopId、payStatus、addTime、isRefund,对当前 hdApp 统计和分页查询帮助有限。
  16. --
  17. -- 执行前建议先在目标环境 EXPLAIN /recharge/list 与 /recharge/stat 的 SQL;
  18. -- 大表请在低峰期执行,并按 MySQL 版本确认 ALGORITHM/LOCK 支持情况。
  19. -- =============================================================================
  20. ALTER TABLE `xhRecharge`
  21. ADD COLUMN `isRefund` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否退款:0不是 1是' AFTER status;
  22. ALTER TABLE `xhRecharge`
  23. ADD INDEX `idx_hd_recharge_list` (`shopId`, `status`, `addTime`),
  24. ALGORITHM = INPLACE,
  25. LOCK = NONE;
  26. ALTER TABLE `xhRecharge`
  27. ADD INDEX `idx_hd_recharge_stat` (`shopId`, `payStatus`, `status`, `addTime`),
  28. ALGORITHM = INPLACE,
  29. LOCK = NONE;
  30. -- 如果客户维度明细页仍然慢,再评估增加这个索引;不要在未验证前盲目增加写入开销。
  31. -- ALTER TABLE `xhRecharge`
  32. -- ADD INDEX `idx_hd_recharge_custom_list` (`shopId`, `customId`, `status`, `addTime`),
  33. -- ALGORITHM = INPLACE,
  34. -- LOCK = NONE;