Files
zkxw/backend/scripts/add_orders_perf_indexes.sql
T
2026-05-12 16:35:07 +08:00

22 lines
1.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 给 /api/web/admin/orders 列表接口做性能索引补强(幂等尽量实现)
-- 注意:不同 MySQL 版本对 IF NOT EXISTS 支持不同;若执行失败,请先 SHOW INDEX 再手动判断是否已存在。
-- 1) 覆盖最常见列表:WHERE is_del=0 ORDER BY create_at DESC
-- 目标:减少 Using filesort / 全表扫描风险
ALTER TABLE biz_order
ADD INDEX idx_order_isdel_createat (is_del, create_at);
-- 2) 常用筛选:区域 + 订单主状态 + 时间排序
ALTER TABLE biz_order
ADD INDEX idx_order_isdel_region_orderstatus_createat (is_del, region_id, order_status, create_at);
-- 3) 常用筛选:区域 + 创建时间范围(startDate/endDate)
ALTER TABLE biz_order
ADD INDEX idx_order_isdel_region_createat (is_del, region_id, create_at);
-- 4) 单号查询建议:
-- 当前实现是 order_no LIKE '%xxx%',该写法通常无法走索引。
-- 若业务可改为前缀匹配(LIKE 'xxx%')或精确匹配(=),将显著提升性能。
-- 订单号已有唯一索引 uk_order_no(可用于 '=' 或前缀匹配)。