Оптимизировать отчеты php sql
Нужно оптимизировать запрос, сейчас выполнение запроса занимает очень большое время, на сколько я понял проблема в сортировке
CREATE TEMPORARY TABLE t1 AS SELECT calls.setup_time, calls.cli, calls.cld,
cdrs.i_account, cdrs.cost, cdrs.connect_time, cdrs.disconnect_time, cdrs.duration,
cdrs.cli_in, cdrs.cld_in, cdrs.billed_duration, cdrs.result, cdrs.i_cdr, cdrs.delay,
cdrs.remote_ip, cdrs.prefix, cdrs.lrn_cld, cdrs.lrn_cld_in, cdrs.area_name,
calls.call_id, cdrs.release_source
FROM cdrs
JOIN calls USING(i_call)
WHERE {$pre_clause['sql']}
ORDER BY calls.setup_time DESC
{$sql_cdrs_limit}";
$params = $pre_clause['params'];
$db->prepNexec($sql, $params);
вот запрос если убрать ORDER BY calls.setup_time DESC то выполняется за секунды
думаю можно ли этот ордер делать в php
и потом делает еще один запрос чтобы статистику внутри таблицы посчитать
function get_total_info($clause, $cdr_currency) {
global $db;
global $caller, $caller_type, $i_caller;
$sql_acct = "SELECT COUNT(*) AS a, SUM(ROUND(duration)) / 60.0 AS b, SUM(billed_duration) / 60.0 AS c,
SUM((cdrs.cost * x1.rate) / x2.rate) AS d
FROM t1 AS cdrs
JOIN accounts ON cdrs.i_account = accounts.i_account
JOIN x_rates x1 ON (x1.i_customer = accounts.i_customer
AND x1.iso_4217 = accounts.base_currency )
JOIN x_rates x2 ON (x2.i_customer = accounts.i_customer AND x2.iso_4217 = ?)
WHERE {$clause['acct']['sql']}";
$params_acct = array_merge(array($cdr_currency), $clause['acct']['params']);
$sql_cust = "SELECT COUNT(*) AS a, SUM(ROUND(cdrs_customers.duration)) / 60.0 AS b,
SUM(cdrs_customers.billed_duration) / 60.0 AS c,
SUM((cdrs_customers.cost * x1.rate) / x2.rate) AS d
FROM t2 AS cdrs_customers
JOIN customers USING (i_customer)
JOIN x_rates x1 ON (x1.i_customer = customers.i_wholesaler
AND x1.iso_4217 = customers.base_currency)
JOIN x_rates x2 ON (x2.i_customer = customers.i_wholesaler AND x2.iso_4217 = ?)
WHERE {$clause['cust']['sql']}";
$params_cust = array_merge(array($cdr_currency), $clause['cust']['params']);
я думал может можно взять данные в пхп и там уже отсортировать и делать тотал
Полный файл в атачменте, если можете оптимизировать, то пишите, количество записей может быть несколько миллионов.
Додатки 1
-
3507 128 2 4 Здравствуйте, я работаю в сфере веб програмирования более 6 лет, и сотрудничал с разными компаниями и клиентами. Я могу осуществить ваш проект и реолизовать ваши идеи касающиеся веб програмирования. Работая со мной вы получите высококачественный код и новотехнологическую систему с современными стандартами и обработкой.
Почему выбрать меня?
1. Работаю без предоплаты
2. Бесплатная помощь по сайту после выполнения заказа
3. Выполню заказ в максимально короткие сроки
-

Вынесения сортировки в php не поможет. У тебя сначала выбираются миллионы записей, а потом они сортируются. Изучи https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
А если есть возможность уменьшить выборку, то это лучший вариант. Неужели будут использоваться все миллионы данных? Делай план запросов и смотри, что имеет больший вес. Многое зависит от конкретных условий в where, индексов, количества данных. Но реально оптимизировать можно запрос в конкретных where параметрах. С динамикой это все намного сложнее. Подумай в сторону изменения логики запроса. Покрути с разных сторон.
-
Актуальні фриланс-проєкти в категорії PHP
Розробка веб-сайту WordPress
1002 UAH
|
Зламався кошик WooCommerce (WordPress) — не додає товар і не відкривається сторінка кошикаНа сайті інтернет-магазинуhttps://www.dobryi-gospodar.com/ (WordPress + WooCommerce) повністю перестала працювати функція оформлення замовлення.При натисканні на кнопку "Додати у кошик" (як у картці товару, так і в каталозі) починається тривале завантаження (індикатор… CMS, PHP ∙ 8 годин 54 хвилини тому ∙ 47 ставок |
Функція пошуку товарів за зображеннямНеобхідно розробити та інтегрувати на сайт функцію пошуку товарів за зображенням.Що потрібно реалізуватиКнопка «Пошук за фото» на сайті.Завантаження зображення користувачем: JPG.Пошук візуально схожих товарів у каталозі.Виведення результатів у вигляді стандартних карток товарів:… PHP, Веб-програмування ∙ 16 годин 20 хвилин тому ∙ 39 ставок |
Парсер expireddomains.net
5000 UAH
Потрібен парсер expireddomains.net на сайті потрібно спочатку залогінитись, проблема в тому що блочить ІР при намаганні парсити дані, потрібно парсити тематичні домени по списку ключових слів, хто не впевнений в своїх силах не пишіть PHP, Веб-програмування ∙ 2 дні 15 годин тому ∙ 50 ставок |
Інтеграція платіжного сервісу з Sales Force
3104 UAH
На сайті стоїть віджет платіжної системи, його потрібно інтегрувати з sales force, щоб всі необхідні параметри бачили на стороні sales force. Потрібно зробити так, щоб усі платежі та підписки контролювалися через sales force. PHP, Веб-програмування ∙ 2 дні 18 годин тому ∙ 41 ставка |