Codeigniter选择SUM使mysqld cpu高

时间:2018-12-02 23:47:18

标签: php codeigniter codeigniter-3

在计算交易的总金额时,我仍然面临着问题,而它返回的总金额却使cpu很高。

Cpu usage

模型类代码

public function get_topup_sender_balance()
{

$this->db->select('SUM(total) as total');
$this->db->from('transactions');
$array = array('sender' => $this->session->id, 'status' => 'Processed', 'payment_type' => 'Topup', 'payment_method' => 'BalanceTopup');
$this->db->where($array);
$this->db->group_by('id');
$res = $this->db->get();
if($res->num_rows() > 0)
{
    return round($res->result(),2);
}else{
     return '0';
}

}

Helper自定义库

public function transaction_balance() {

    $sender_topup = $this->CI->myac_model->get_topup_sender_balance();
    return number_format($sender_topup, 2, '.', '');
}

在Controller类和视图页面上,我调用$ this-> helper_api-> transaction_balance()来获得客户平衡,并且返回的平衡良好,但mysqld cpu会很高

在mysql日志上我得到

# Query_time: 0.353698  Lock_time: 0.000111 Rows_sent: 0  Rows_examined: 484565
SET timestamp=1543791344;
SELECT SUM(total) as total
FROM `transactions`
WHERE `sender` = '4'
AND `status` = 'Processed'
AND `payment_type` = 'Topup'
AND `payment_method` = 'BalanceTopup'
GROUP BY `id`;

任何解决此问题的想法/想法。

0 个答案:

没有答案