Codeigniter выберите SUM дать mysqld cpu high

Я все еще сталкиваюсь с проблемой расчета общей суммы транзакции, в то время как она возвращает общую сумму, которая поддерживает высокий ЦП.

Использование процессора

Код класса модели

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';
}

}

Пользовательская библиотека помощника

public function transaction_balance() {

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

На странице классов и просмотров контроллера я вызываю $ this-> helper_api-> transaction_balance (), чтобы получить баланс клиента, и это возвратный баланс, но процессор mysqld будет высоким

И в журналах 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`;

Любое решение / идея для решения этой проблемы радует.

Учитывая, что он проверил почти полмиллиона записей и занял около 1/3 секунды, я бы не стал слишком беспокоиться об использовании процессора. Скорее всего, профилировщик потратил значительную часть времени процессора.

DFriend 03.12.2018 02:01

@DFriend сайт будет медленным, если я проверю баланс, другие страницы работают хорошо.

T.G.B 03.12.2018 07:00

опубликуйте свой код создания mysql для своей таблицы - у вас есть правильные индексы? следующее, что приходит на ум - round() ожидает числа с плавающей запятой - однако result() всегда возвращает массив с объектами - так что ваша строка return round($res->result(),2); в любом случае работать не будет.

sintakonte 03.12.2018 09:04

Привет, @sintakonte, я попытался вернуть результат в массиве, но проблема не исчезла, и мой сайт все еще работает медленно.

T.G.B 03.12.2018 11:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
74
0

Другие вопросы по теме