У меня есть ERP-система, запрограммированная на PHP с базой данных mySQL со всеми моими заказами в течение последних 4 лет. Теперь я хотел бы создать функцию для создания статистики продаж. Должна быть предусмотрена возможность выбора критериев поиска, таких как Salesman, Department и year/period.Создание статистики продаж для моей системы ERP, но производительность плохая
Статистика продаж должна быть сгруппирована по желанию клиента. Так же, как на иллюстрации этой ссылке: http://maabjerg.eu/illustration_stat.png
Мои клиенты стол:
customers
--------------------
id - int - auto - primary
name - varchar(100)
Мои заказы таблице:
orders
-------------------
id - int - auto - primary
customerId - int
departmentId - int
salesmanId - int
orderdate - datetime
invoicedate - datetime
quantity - int
saleprice - decimal(10,2)
У меня не было никаких проблем, делая это, но производительность очень плохо. То, как я сделал это раньше было как:
foreach($customers as $customer)
{
foreach($months as $month)
{
$sql = mysql_query("select sum(quantity*saleprice) as amount from orders where DATE_FORMAT(invoicedate, '%m-%Y') = '".$month."-".$_REQUEST["year"]."' AND customerId='".$customer->id."'",$connection) or die(mysql_error());
$rs = mysql_fetch_assoc($sql);
$result[$customerId][$month] = $rs["amount"];
}
}
Я надеюсь, что кто-то может дать мне совет, как сделать это наилучшим образом.
Заранее спасибо.
Штеффен
Почему бы просто не запустить все это как один SQL-запрос? – Fluffeh
Сделайте «EXPLAIN» и посмотрите, есть ли возможность добавлять индексы. – Halcyon