summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-08-09 17:29:30 -0700
committerIvan Kohler <ivan@freeside.biz>2014-08-09 17:29:30 -0700
commit16f7115e52ec02d1b1e3e59d8b5ba54126f1a506 (patch)
tree013b904d23476db0f6e1bcd7724669a1c80df379
parent3d88896c03e09483714c84a06106233081800f70 (diff)
optimize freeside-cdrd pending query, RT#29752
-rw-r--r--FS/bin/freeside-cdrd31
1 files changed, 17 insertions, 14 deletions
diff --git a/FS/bin/freeside-cdrd b/FS/bin/freeside-cdrd
index b21bd5b07..45d58789d 100644
--- a/FS/bin/freeside-cdrd
+++ b/FS/bin/freeside-cdrd
@@ -39,24 +39,27 @@ my $extra_sql =
" AND optionvalue = '1' ".
" AND ( susp IS NULL OR susp = 0)".
" AND ( cancel IS NULL OR cancel = 0)".
- " AND 0 < (
- SELECT COUNT(*) FROM svc_phone LEFT JOIN cust_svc USING (svcnum)
+ " AND EXISTS (
+ SELECT 1 FROM svc_phone LEFT JOIN cust_svc USING (svcnum)
WHERE cust_pkg.pkgnum = cust_svc.pkgnum
- AND 0 < ( SELECT COUNT(*) FROM cdr
- WHERE ( freesidestatus IS NULL OR freesidestatus = '' )
- AND ( charged_party = svc_phone.phonenum
- OR charged_party = svc_phone.countrycode
- || svc_phone.phonenum
- OR src = svc_phone.phonenum
- OR src = svc_phone.countrycode
- || svc_phone.phonenum
- )
- )
+ AND EXISTS ( SELECT 1 FROM cdr
+ WHERE ( freesidestatus IS NULL OR freesidestatus = '' )
+ AND ( charged_party = svc_phone.phonenum
+ OR charged_party = svc_phone.countrycode
+ || svc_phone.phonenum
+ OR src = svc_phone.phonenum
+ OR src = svc_phone.countrycode
+ || svc_phone.phonenum
+ )
+ LIMIT 1
+ )
+ LIMIT 1
)
- AND 0 = (
- SELECT COUNT(*) FROM queue
+ AND NOT EXISTS (
+ SELECT 1 FROM queue
WHERE queue.job = 'FS::cust_main::queued_bill'
AND queue.custnum = cust_pkg.custnum
+ LIMIT 1
)
";