商品利润镜像:长单号只查线上订单号,内部订单号补索引 #472
@ -422,6 +422,7 @@ return [
|
||||
'wide_strings' => true,
|
||||
'indexes' => [
|
||||
['undefined8', 'undefined7'],
|
||||
['undefined1'],
|
||||
['undefined2'],
|
||||
['undefined10'],
|
||||
],
|
||||
|
||||
@ -95,7 +95,7 @@ class GoodsProfitAfsRepository
|
||||
|
||||
// 单号查询走各自列的索引,避免 undefined2 OR undefined1 触发全表扫描。
|
||||
if ($orderNo !== '') {
|
||||
foreach (['online_order_no', 'internal_order_no'] as $field) {
|
||||
foreach ($this->orderNumberFields($orderNo) as $field) {
|
||||
if (! isset($columns[$field])) {
|
||||
continue;
|
||||
}
|
||||
@ -183,7 +183,7 @@ class GoodsProfitAfsRepository
|
||||
$records = [];
|
||||
$cap = max($limit * 4, 400);
|
||||
|
||||
foreach (['online_order_no', 'internal_order_no'] as $field) {
|
||||
foreach ($this->orderNumberFields($orderNo) as $field) {
|
||||
if (! isset($columns[$field])) {
|
||||
continue;
|
||||
}
|
||||
@ -345,4 +345,17 @@ class GoodsProfitAfsRepository
|
||||
|
||||
return trim($label);
|
||||
}
|
||||
|
||||
/**
|
||||
* 线上订单号和内部订单号长度差很多(19 位 vs 7~8 位)。长单号只查线上订单号,
|
||||
* 避免用内部订单号列做 `like '长单号%'` 的全表扫描。
|
||||
*
|
||||
* @return list<string>
|
||||
*/
|
||||
private function orderNumberFields(string $orderNo): array
|
||||
{
|
||||
return mb_strlen($orderNo) >= 12
|
||||
? ['online_order_no']
|
||||
: ['online_order_no', 'internal_order_no'];
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user