-- ============================================================================= -- 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;