batchValues() 原来拿值本身当数组键去重,纯数字订单号(如 3317080368285022883)会被 PHP 转成 int,后续 whereIn 就成了数字和长文本比较,走不上 so_id / outer_oi_id 的 前缀索引,实测退化成全表扫描(70 秒以上)。 改成键加 v 前缀、返回原字符串,ctype_digit 显式传字符串。新增用例覆盖前导零单号 0001234 与 1234,防止再回归。
batchValues() 原来拿值本身当数组键去重,纯数字订单号(如 3317080368285022883)会被 PHP 转成 int,后续 whereIn 就成了数字和长文本比较,走不上 so_id / outer_oi_id 的 前缀索引,实测退化成全表扫描(70 秒以上)。 改成键加 v 前缀、返回原字符串,ctype_digit 显式传字符串。新增用例覆盖前导零单号 0001234 与 1234,防止再回归。