子查询用exists可以加快速度
This commit is contained in:
parent
4809deb4d4
commit
6711e537f5
@ -168,12 +168,12 @@ trait OrderCardConcern
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($conditions['sell_starttime']) && isset($conditions['sell_endtime'])) {
|
if (isset($conditions['sell_starttime']) && isset($conditions['sell_endtime'])) {
|
||||||
$query->whereRaw(sprintf("sim in (SELECT sim FROM virtual_order_cards_partition WHERE type in (0, 1) AND created_at >= '%s' AND created_at <= '%s' AND deleted_at is null AND refunded_at is null)", $conditions['sell_starttime'], $conditions['sell_endtime']));
|
$query->whereRaw(sprintf("exists (SELECT sim FROM virtual_order_cards_partition WHERE type in (0, 1) AND created_at >= '%s' AND created_at <= '%s' AND deleted_at is null AND refunded_at is null)", $conditions['sell_starttime'], $conditions['sell_endtime']));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($conditions['has_type']) && !empty($conditions['has_type'])) {
|
if (isset($conditions['has_type']) && !empty($conditions['has_type'])) {
|
||||||
$conditions['has_type'] = array_wrap($conditions['has_type']);
|
$conditions['has_type'] = array_wrap($conditions['has_type']);
|
||||||
$query->whereRaw(sprintf("sim in (SELECT sim from virtual_order_cards_partition WHERE type in (%s))", implode(',', $conditions['has_type'])));
|
$query->whereRaw(sprintf("exists (SELECT sim from virtual_order_cards_partition WHERE type in (%s))", implode(',', $conditions['has_type'])));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ trait OrderCardConcern
|
|||||||
|
|
||||||
switch ($conditions['card_status']) {
|
switch ($conditions['card_status']) {
|
||||||
case 0:
|
case 0:
|
||||||
$hasRaw = sprintf("sim in (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at < '%s')", $date);
|
$hasRaw = sprintf("exists (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at < '%s')", $date);
|
||||||
|
|
||||||
$this->model = $this->model->whereNull('service_start_at')
|
$this->model = $this->model->whereNull('service_start_at')
|
||||||
->whereRaw($hasRaw)
|
->whereRaw($hasRaw)
|
||||||
@ -191,7 +191,7 @@ trait OrderCardConcern
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
$hasRaw = sprintf("sim in (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at < '%s')", $date);
|
$hasRaw = sprintf("exists (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at < '%s')", $date);
|
||||||
|
|
||||||
$this->model = $this->model->whereNull('service_start_at')
|
$this->model = $this->model->whereNull('service_start_at')
|
||||||
->whereRaw($hasRaw)
|
->whereRaw($hasRaw)
|
||||||
@ -199,23 +199,23 @@ trait OrderCardConcern
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
$havingRaw = sprintf("sim in (SELECT sim FROM virtual_order_cards_partition GROUP BY sim HAVING MAX(service_end_at) >= '%s')", $date);
|
$havingRaw = sprintf("exists (SELECT sim FROM virtual_order_cards_partition GROUP BY sim HAVING MAX(service_end_at) >= '%s')", $date);
|
||||||
$hasRaw = sprintf("sim in (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at <= '%s')", $date);
|
$hasRaw = sprintf("exists (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at <= '%s')", $date);
|
||||||
$this->model = $this->model->whereNotNull('service_start_at')
|
$this->model = $this->model->whereNotNull('service_start_at')
|
||||||
->whereRaw($havingRaw)
|
->whereRaw($havingRaw)
|
||||||
->whereRaw($hasRaw);
|
->whereRaw($hasRaw);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
$havingRaw = sprintf("sim in (SELECT sim FROM virtual_order_cards_partition GROUP BY sim HAVING MAX(service_end_at) < '%s')", $date);
|
$havingRaw = sprintf("exists (SELECT sim FROM virtual_order_cards_partition GROUP BY sim HAVING MAX(service_end_at) < '%s')", $date);
|
||||||
$hasRaw = sprintf("sim in (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at <= '%s')", $date);
|
$hasRaw = sprintf("exists (SELECT sim FROM cards where cancelled_at IS NULL or cancelled_at <= '%s')", $date);
|
||||||
$this->model = $this->model->whereNotNull('service_start_at')
|
$this->model = $this->model->whereNotNull('service_start_at')
|
||||||
->whereRaw($havingRaw)
|
->whereRaw($havingRaw)
|
||||||
->whereRaw($hasRaw);
|
->whereRaw($hasRaw);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
$hasRaw = sprintf("sim in (SELECT sim FROM cards where cancelled_at IS NOT NULL AND cancelled_at >= '%s')", $date);
|
$hasRaw = sprintf("exists (SELECT sim FROM cards where cancelled_at IS NOT NULL AND cancelled_at >= '%s')", $date);
|
||||||
$this->model = $this->model->whereRaw($hasRaw);
|
$this->model = $this->model->whereRaw($hasRaw);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user