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_table,pct_customers_arch,crms_customer_master和crms_custdaily_master,以获取客户数。
问题
这个查询会对我们的数据库服务器造成很大的负担。如何优化这个查询,以便搜索数据库只需不到一分钟。我试图通过连接简化查询,但没有运气。
我找到的解决方案
将计数计入表并使用新表我将其显示到新页面。我知道这是一个很好的解决方案,但感觉它不是直接的解决方案。所以,如果你们知道我的问题的任何其他解决方案,请分享。
答案 0 :(得分:0)
您需要为每个表创建一个索引;要编制索引的列是status和add_branch。