-- =============================================================================
-- hdApp 充值记录/统计查询索引建议 - xhRecharge
-- =============================================================================
-- 当前查询形态：
-- 1. /recharge/list:
--    shopId + status，按 addTime DESC,id DESC 分页；
--    可选 customId / onlinePay + payWay / isRefund。
-- 2. /recharge/stat:
--    shopId + payStatus + status + addTime 时间范围；
--    按渠道或客户聚合，并用 isRefund 统计减少金额。
--
-- 当前表已有索引：
-- PRIMARY(id), orderSn(orderSn), custom_status(customId,status),
-- main_custom_status(mainId,customId,status)。
-- 这些索引缺少 shopId、payStatus、addTime、isRefund，对当前 hdApp 统计和分页查询帮助有限。
--
-- 执行前建议先在目标环境 EXPLAIN /recharge/list 与 /recharge/stat 的 SQL；
-- 大表请在低峰期执行，并按 MySQL 版本确认 ALGORITHM/LOCK 支持情况。
-- =============================================================================

ALTER TABLE `xhRecharge`
    ADD COLUMN `isRefund` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否退款：0不是 1是' AFTER status;

ALTER TABLE `xhRecharge`
    ADD INDEX `idx_hd_recharge_list` (`shopId`, `status`, `addTime`),
    ALGORITHM = INPLACE,
    LOCK = NONE;

ALTER TABLE `xhRecharge`
    ADD INDEX `idx_hd_recharge_stat` (`shopId`, `payStatus`, `status`, `addTime`),
    ALGORITHM = INPLACE,
    LOCK = NONE;

-- 如果客户维度明细页仍然慢，再评估增加这个索引；不要在未验证前盲目增加写入开销。
-- ALTER TABLE `xhRecharge`
--     ADD INDEX `idx_hd_recharge_custom_list` (`shopId`, `customId`, `status`, `addTime`),
--     ALGORITHM = INPLACE,
--     LOCK = NONE;
