add_orders_perf_indexes.sql 1.1 KB

123456789101112131415161718192021
  1. -- 给 /api/web/admin/orders 列表接口做性能索引补强(幂等尽量实现)
  2. -- 注意:不同 MySQL 版本对 IF NOT EXISTS 支持不同;若执行失败,请先 SHOW INDEX 再手动判断是否已存在。
  3. -- 1) 覆盖最常见列表:WHERE is_del=0 ORDER BY create_at DESC
  4. -- 目标:减少 Using filesort / 全表扫描风险
  5. ALTER TABLE biz_order
  6. ADD INDEX idx_order_isdel_createat (is_del, create_at);
  7. -- 2) 常用筛选:区域 + 订单主状态 + 时间排序
  8. ALTER TABLE biz_order
  9. ADD INDEX idx_order_isdel_region_orderstatus_createat (is_del, region_id, order_status, create_at);
  10. -- 3) 常用筛选:区域 + 创建时间范围(startDate/endDate)
  11. ALTER TABLE biz_order
  12. ADD INDEX idx_order_isdel_region_createat (is_del, region_id, create_at);
  13. -- 4) 单号查询建议:
  14. -- 当前实现是 order_no LIKE '%xxx%',该写法通常无法走索引。
  15. -- 若业务可改为前缀匹配(LIKE 'xxx%')或精确匹配(=),将显著提升性能。
  16. -- 订单号已有唯一索引 uk_order_no(可用于 '=' 或前缀匹配)。