Основной отчет и отчет по трафику (запрос)

Технические вопросы по UTM 5.0
Ответить
Hron
Сообщения: 12
Зарегистрирован: Вт окт 19, 2010 16:56

Основной отчет и отчет по трафику (запрос)

Сообщение Hron »

1. Нарыл запрос - отчет по трафику группы

Код: Выделить всё

SELECT t_class_name, SUM(bytes)/1048576, ROUND(SUM(discount), 4)
FROM discount_transactions_iptraffic_all, t_class, users_groups_link, users
WHERE discount_date >= unix_timestamp('2011-04-01 00:00:00')
AND discount_date <= unix_timestamp&#40;'2011-04-02 00&#58;00&#58;00'&#41;
AND t_class.id=t_class
AND users_groups_link.user_id = users.id 
AND users_groups_link.group_id = 100
AND users.basic_account = discount_transactions_iptraffic_all.account_id 
GROUP BY t_class
ORDER BY t_class;
Но проблема в том, что он выполняется очень долго. Группа с тысячью абонентов формируется 8 минут. Как его можно переделать или оптимизировать? Может у кого есть готовый запрос?

2. Так же нужен еще основной отчет для группы.
3. К основному отчету группы желательно прикрепить фильтр "IP трафик больше 0"
4. Нужен еще отчет по трафику, только не для группы, а для определенного ТП.

tail-n
Сообщения: 101
Зарегистрирован: Пн июн 01, 2009 02:32

Re: Основной отчет и отчет по трафику (запрос)

Сообщение tail-n »

Hron писал(а):1. Нарыл запрос - отчет по трафику группы

Код: Выделить всё

SELECT t_class_name, SUM&#40;bytes&#41;/1048576, ROUND&#40;SUM&#40;discount&#41;, 4&#41;
FROM discount_transactions_iptraffic_all, t_class, users_groups_link, users
WHERE discount_date >= unix_timestamp&#40;'2011-04-01 00&#58;00&#58;00'&#41;
AND discount_date <= unix_timestamp&#40;'2011-04-02 00&#58;00&#58;00'&#41;
AND t_class.id=t_class
AND users_groups_link.user_id = users.id 
AND users_groups_link.group_id = 100
AND users.basic_account = discount_transactions_iptraffic_all.account_id 
GROUP BY t_class
ORDER BY t_class;
Но проблема в том, что он выполняется очень долго. Группа с тысячью абонентов формируется 8 минут. Как его можно переделать или оптимизировать? Может у кого есть готовый запрос?

2. Так же нужен еще основной отчет для группы.
3. К основному отчету группы желательно прикрепить фильтр "IP трафик больше 0"
4. Нужен еще отчет по трафику, только не для группы, а для определенного ТП.
Кажется мне, здесь лучше использовать INNER JOIN вместо

Код: Выделить всё

FROM discount_transactions_iptraffic_all, t_class, users_groups_link, users

Hron
Сообщения: 12
Зарегистрирован: Вт окт 19, 2010 16:56

Сообщение Hron »

Пробовал так

Код: Выделить всё

SELECT t_class_name, SUM&#40;bytes&#41;/1048576, ROUND&#40;SUM&#40;discount&#41;, 4&#41;
FROM discount_transactions_iptraffic_all 
INNER JOIN t_class ON t_class.id=t_class
INNER JOIN users ON users.basic_account = discount_transactions_iptraffic_all.account_id, users_groups_link
WHERE discount_date >= unix_timestamp&#40;'2011-04-01 00&#58;00&#58;00'&#41;
AND discount_date <= unix_timestamp&#40;'2011-04-02 00&#58;00&#58;00'&#41;
AND users_groups_link.user_id = users.id 
AND users_groups_link.group_id = 100 
GROUP BY t_class
ORDER BY t_class;
Но на скорость выполнения абсолютно никак не влияет

Ответить