记录特定于区域的所有客户的客户数量

时间:2016-10-05 05:00:08

标签: java mysql sql-server sybase

select 
                "pct_customers_count"=isnull((select  count(customer_code)  from CRM..pct_customers where status <> "R" and add_branch=t3.c_branchcode),0) 
                ,"pct_arch_customers_count"=isnull((select  count(customer_code)  from CRM..pct_customers_arch where status <> "R" and add_branch=t3.c_branchcode) ,0)
                ,"crms_customers_count"= isnull((select  count(customer_code)  from CRMS..crms_customer_master where status <> "R" and add_branch=t3.c_branchcode) ,0)
                ,"crms_customers_daily_count"=isnull((select  count(customer_code)  from CRMS..crms_custdaily_master where status <> "R" and add_branch=t3.c_branchcode),0)
            from 
                ums..admin_regions t1 
                ,ums..admin_branches t2
                ,ums..branch_master t3
            where 
                t1.reg_code ='ZZZZ'
                and t2.reg_grandpa = t1.reg_code
                and t3.c_branchcode = t2.branch_code

下面我给出了我使用的表的总行大小

  • pct_customers:720227
  • pct_customers_arch:341500
  • crms_customer_master:999005
  • crms_custdaily_master:929022

最后三个表获取分支代码,并将其提供给pct_customers_table,pct_customers_arch,crms_customer_master和crms_custdaily_master,以获取客户数。

问题

这个查询会对我们的数据库服务器造成很大的负担。如何优化这个查询,以便搜索数据库只需不到一分钟。我试图通过连接简化查询,但没有运气。

我找到的解决方案

将计数计入表并使用新表我将其显示到新页面。我知道这是一个很好的解决方案,但感觉它不是直接的解决方案。所以,如果你们知道我的问题的任何其他解决方案,请分享。

1 个答案:

答案 0 :(得分:0)

您需要为每个表创建一个索引;要编制索引的列是status和add_branch。