Files
pj_service_cloud/db/slowlog_optimization_20260826/01_add_indexes.sql
T
2026-09-08 15:25:23 +08:00

45 lines
2.4 KiB
SQL

-- 线上慢 SQL 索引优化(OceanBase MySQL 模式)
-- 执行前请确认同名索引不存在;建议低峰期逐条执行并观察建索引耗时。
-- 本文件只包含索引 DDL,不包含任何数据修改。
-- P0:订单列表按租户、删除标记、创建时间倒序分页。
CREATE INDEX idx_hard_order_tenant_del_ct_uid
ON pjcloudx_hardware.hard_order (tenant_id, del_flag, create_time, user_id);
-- P0:订单号 + 订单类型 + 状态精确计数。
CREATE INDEX idx_hard_order_tenant_del_order_lookup
ON pjcloudx_hardware.hard_order (tenant_id, del_flag, order_no, order_type, order_status);
-- P0:设备侧订单号精确查询。
CREATE INDEX idx_hard_order_tenant_del_android_code
ON pjcloudx_hardware.hard_order (tenant_id, del_flag, android_order_code);
-- P0:每个订单取最新售后记录(GROUP BY order_id + MAX(id))。
CREATE INDEX idx_hard_after_sale_tenant_order_id
ON pjcloudx_hardware.hard_after_sale (tenant_id, order_id, id);
-- P0:钱包流水按业务类型、时间倒序分页;biz_type 为 TINYTEXT,使用前缀索引。
CREATE INDEX idx_wallet_tx_tenant_del_ct_uid
ON pjcloudx_wallet.wallet_transaction (tenant_id, del_flag, create_time, user_id);
-- P0:钱包流水按业务类型、时间倒序分页;biz_type 为 TINYTEXT,使用前缀索引。
CREATE INDEX idx_wallet_tx_tenant_del_biz_ct_uid
ON pjcloudx_wallet.wallet_transaction (tenant_id, del_flag, biz_type(8), create_time, user_id);
-- P0:流程历史按办理人查询并按结束时间倒序。
CREATE INDEX idx_act_hi_actinst_assignee_end
ON pjcloudx_flow.act_hi_actinst (ASSIGNEE_, END_TIME_);
-- P1:支付状态 + 支付时间统计。先观察 P0 上线后的实际收益,再决定是否执行。
-- CREATE INDEX idx_hard_order_tenant_del_status_ptime_mch
-- ON pjcloudx_hardware.hard_order (tenant_id, del_flag, order_status, pay_time, merchant_id);
-- P1:指定商户部门的支付统计。索引较宽,按接口频率决定是否执行。
-- CREATE INDEX idx_hard_order_tenant_del_mdept_status_mt_ptime
-- ON pjcloudx_hardware.hard_order
-- (tenant_id, del_flag, merchant_dept_id, order_status, merchant_type, pay_time);
-- P1:按钱包所属部门定位钱包 ID;维表较小时收益有限。
-- CREATE INDEX idx_wallet_manage_tenant_dept_id
-- ON pjcloudx_wallet.wallet_manage (tenant_id, dept_id, id);