MT#11509 Optimize query

Further optimization described in the ticket.

Change-Id: Ie559a888a0e7fb8ed3ffc470349a2faab1b894ab
changes/49/3949/1
Irina Peshinskaya 10 years ago committed by Kirill Solomko
parent 74f02786b7
commit ee0577e11b

@ -25,11 +25,12 @@ my $o = Sipwise::Provisioning::Billing->new();
my $db = $o->{database}; my $db = $o->{database};
my $a = $db->sql_get_all_arrayref(<<"!"); my $a = $db->sql_get_all_arrayref(<<"!");
SELECT 'profile_limit' as type, cdr.source_account_id, SUM(cdr.source_customer_cost) AS daily_cost, SELECT 'profile_limit' as type, cdr.source_account_id, SUM(cdr.source_customer_cost) AS daily_cost, bpinfo.contract_id,
contracts.id, bpinfo.fraud_daily_limit, bpinfo.fraud_daily_lock, bpinfo.fraud_daily_notify
FROM (
SELECT contracts.id as contract_id,
billing_profiles.fraud_daily_limit, billing_profiles.fraud_daily_lock, billing_profiles.fraud_daily_notify billing_profiles.fraud_daily_limit, billing_profiles.fraud_daily_lock, billing_profiles.fraud_daily_notify
FROM accounting.cdr FROM billing.contracts
JOIN billing.contracts ON cdr.source_account_id = contracts.id
JOIN billing.billing_mappings ON contracts.id = billing_mappings.contract_id JOIN billing.billing_mappings ON contracts.id = billing_mappings.contract_id
JOIN billing.billing_profiles JOIN billing.billing_profiles
ON (billing_profiles.id = ON (billing_profiles.id =
@ -42,11 +43,13 @@ JOIN billing.billing_profiles
) )
) )
WHERE (contracts.status = 'active') WHERE (contracts.status = 'active')
AND (DATEDIFF(FROM_UNIXTIME(cdr.start_time), CURDATE()) = 0)
AND (billing_profiles.fraud_daily_limit IS NOT NULL) AND (billing_profiles.fraud_daily_limit IS NOT NULL)
AND (billing_profiles.fraud_daily_limit > 0) AND (billing_profiles.fraud_daily_limit > 0)
) as bpinfo
JOIN accounting.cdr ON cdr.source_account_id = bpinfo.contract_id
WHERE (DATEDIFF(FROM_UNIXTIME(cdr.start_time), CURDATE()) = 0)
GROUP BY cdr.source_account_id GROUP BY cdr.source_account_id
HAVING (daily_cost > billing_profiles.fraud_daily_limit) HAVING (daily_cost > bpinfo.fraud_daily_limit)
UNION ALL UNION ALL

Loading…
Cancel
Save