Оптимизировать отчеты 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
Функция поиска товаров по изображениюНеобходимо разработать и интегрировать на сайт функциюпоиска товаров по изображению.Что нужно реализоватьКнопка«Поиск по фото»на сайте.Загрузка изображения пользователем: JPG.Поиск визуально похожих товаров в каталоге.Вывод результатов в виде стандартных карточек товаров: фото,… PHP, Веб-программирование ∙ 5 часов 40 минут назад ∙ 25 ставок |
Парсер expireddomains.net
5000 UAH
Нужен парсер expireddomains.net на сайте нужно сначала залогиниться, проблема в том что блокирует ИП при попытке парсить данные, нужно парсить тематические домены по списку ключевых слов, кто не уверен в своих силах не пишите PHP, Веб-программирование ∙ 2 дня 4 часа назад ∙ 49 ставок |
Интеграция платежного сервиса с Sales Force
3101 UAH
На сайте стоит виджет платежной системы, его нужно интегрировать с asles fоrce что бы все требуемые параметры видели на стороне salec force Нужно сдлеать так, что бы все платежи и подписки кнтролировались через salecforec PHP, Веб-программирование ∙ 2 дня 8 часов назад ∙ 40 ставок |
Домофонные системы
4000 UAH
Ищем опытного программиста BAS (1С 8.3) для доработки самописной конфигурации под бизнес-процессы нашей компании. Что нужно: — Изучить текущую самописную конфигурацию BAS 8.3 — Доработать и настроить под наши процессы — Учет: клиенты, договоры, заявки, склад, оплаты, акты… PHP, Базы данных и SQL ∙ 5 дней 7 часов назад ∙ 13 ставок |
Выгрузка товаров из 1С на prom.uaСоздать, настроить модуль выгрузки по API, товаров из 1С в кабинет и на сайт prom.ua, rozetka или другой маркетплейс на выбор, остатки, наименования, картинка из 1С, цены, автоматическая выгрузка, автоматическое обновление PHP, Базы данных и SQL ∙ 5 дней 23 часа назад ∙ 21 ставка |