22 lines
1.1 KiB
SQL
22 lines
1.1 KiB
SQL
-- 给 /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(可用于 '=' 或前缀匹配)。
|
||
|