|
|
|
| Набросал статистический модуль. Всё работает, но сильно удручает скорость запросов (по полминуты и даже больше). За основу взял довольно простое решение - в PHPшном цикле опрашиваю базу. Думаю, можно это решить по другому, уже средствами MySQL, но не силён в этом.
Итак: к примеру, я собираю месячную статистику, выводя всякие там цифирки по дням.
SELECT Promo, COUNT(*) AS Downloads FROM Users WHERE Val_Date>0 AND logind LIKE
findDate[$i]['start'] . "%' - тут у меня торчит конкретная дата
GROUP BY Promo
|
и так в цикле, например, 31 раз. Из-за этого выходит черезчур тяжеловесно. Можно ведь это в один запрос упаковать? | |
|
|
|
|
|
|
|
для: Dimanoss
(15.05.2008 в 15:17)
| | Почти наверняка можно.
Но вот то, что Вы написали - понять нельзя.
Запрос непонятно на каком языке.
SELECT вроде из SQL
[$i]['start'] - из php
"%' - вообще невесть на чем.
Неплохо также было привести некую информацию о структуре таблицы и о смысле запрашиваемой аналитики. | |
|
|
|
|
|
|
|
для: Trianon
(15.05.2008 в 15:48)
| | уточню. Так оно выглядит в запросе:
SELECT Promo, COUNT(*) AS Downloads FROM Users WHERE Val_Date>0 AND logind LIKE '2008-05-15%' GROUP BY Promo
|
| |
|
|
|
|
|
|
|
для: Dimanoss
(15.05.2008 в 15:53)
| | А если запросить что-то вроде
SELECT Promo, LEFT(logind, 10) AS `day`, COUNT(*) AS Downloads
FROM Users
WHERE Val_Date>0
GROUP BY Promo, day
HAVING `day` BETWEEN '2008-05-01' AND '2008-05-15'
ORDER BY Promo, `day`
|
? | |
|
|
|
|
|
|
|
для: Trianon
(15.05.2008 в 16:13)
| | Спасибо, выборка работает, осталось ток обработку её написать. Ток единственный вопрос: смущает меня LEFT(logind, 10) - что такое в этом случае "10"? | |
|
|
|
|
|
|
|
для: Dimanoss
(15.05.2008 в 16:40)
| | 10 - это второй параметр mySQL-функции LEFT()
Если LEFT Вас не смущает, значит описание этой функции в руководстве по MySQL Вы нашли. | |
|
|
|
|
|
|
|
для: Trianon
(15.05.2008 в 16:48)
| | упс.... брякнул по невнимательности - в башке LEFT JOIN торчал | |
|
|
|