47 lines
2.6 KiB
SQL
47 lines
2.6 KiB
SQL
-- /wallet/wallet-rule-transaction/page-join 分页、准确计数及当前页详情索引。
|
|
-- 先发布配套 SQL 改造才能消除 GROUP BY 和 biz_id 的隐式数字转换。
|
|
-- 请在 pjcloudx_wallet 库核对 SHOW INDEX;同名同列索引已存在时跳过对应语句,
|
|
-- 同名但定义不同应先核实。大表低峰逐条执行,观察 IO 和复制延迟。
|
|
-- LOCK=NONE 仍需要短暂元数据锁;执行前排查长事务,勿并发创建索引。
|
|
|
|
-- 默认列表、时间范围、COUNT;等值前缀后按 create_time/id 反向扫描。
|
|
ALTER TABLE pjcloudx_wallet.wallet_rule_transaction
|
|
ADD INDEX idx_wrt_tenant_del_ct_id (tenant_id, del_flag, create_time, id),
|
|
ALGORITHM=INPLACE, LOCK=NONE;
|
|
|
|
-- 按转账类型筛选时仍保持稳定时间排序,并使该条件的 COUNT 使用覆盖索引。
|
|
ALTER TABLE pjcloudx_wallet.wallet_rule_transaction
|
|
ADD INDEX idx_wrt_tenant_del_biz_ct_id (tenant_id, del_flag, biz_type, create_time, id),
|
|
ALGORITHM=INPLACE, LOCK=NONE;
|
|
|
|
-- 退款/未退款状态查询:避免准确计数时扫描并回表全部转账记录。
|
|
ALTER TABLE pjcloudx_wallet.wallet_rule_transaction
|
|
ADD INDEX idx_wrt_tenant_del_refund_ct_id (tenant_id, del_flag, is_refund, create_time, id),
|
|
ALGORITHM=INPLACE, LOCK=NONE;
|
|
|
|
-- 退回日期范围:该筛选不要求传 is_refund,使用独立的日期前缀。
|
|
ALTER TABLE pjcloudx_wallet.wallet_rule_transaction
|
|
ADD INDEX idx_wrt_tenant_del_rt_ct_id (tenant_id, del_flag, refund_time, create_time, id),
|
|
ALGORITHM=INPLACE, LOCK=NONE;
|
|
|
|
-- EXISTS 和当前页流水定位;biz_type 是 TINYTEXT,必须使用前缀长度。
|
|
-- 必须保留 biz_id 的精确字符串等值条件;SIGNED 等值仅用于反向主键定位,不能替代它。
|
|
ALTER TABLE pjcloudx_wallet.wallet_transaction
|
|
ADD INDEX idx_wt_tenant_bizid_type (tenant_id, biz_id, biz_type(8)),
|
|
ALGORITHM=INPLACE, LOCK=NONE;
|
|
|
|
-- 部门树、部门权限的流水存在性判断;也覆盖按租户/类型筛选的子查询。
|
|
ALTER TABLE pjcloudx_wallet.wallet_transaction
|
|
ADD INDEX idx_wt_tenant_type_dept_bizid (tenant_id, biz_type(8), dept_id, biz_id, user_id),
|
|
ALGORITHM=INPLACE, LOCK=NONE;
|
|
|
|
-- 执行后用实际租户和日期 EXPLAIN 验证:
|
|
-- SELECT a.id FROM wallet_rule_transaction a
|
|
-- WHERE a.tenant_id = ? AND a.del_flag = '0'
|
|
-- AND a.create_time BETWEEN ? AND ?
|
|
-- ORDER BY a.create_time DESC, a.id DESC LIMIT 10;
|
|
-- 预期使用 idx_wrt_tenant_del_ct_id,无临时表和 filesort。
|
|
-- SELECT MIN(t.id) FROM wallet_transaction t
|
|
-- WHERE t.tenant_id = ? AND t.biz_id = ? AND t.biz_type = '6';
|
|
-- 预期使用 idx_wt_tenant_bizid_type,通过业务编号定位少量流水。
|