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
客户数量:341500
crms\U客户_master:999005
客户关系管理系统_master:929022
最后三个表获取分支代码并将其提供给pct\u customers\u表、pct\u customers\u arch、crms\u customer\u master和crms\u custdaily\u master fot以计算客户数。
问题
这个查询在我们的数据库服务器上占用了很大的负载。如何优化这个查询,使搜索数据库所需的时间不到一分钟。我试图通过联接简化查询,但没有成功。
我找到的解决方案
我知道这是一个很好的解决方案,但感觉这不是一个直接的解决方案。所以如果你们知道我的问题的任何其他解决方案,请分享。
1条答案
按热度按时间hivapdat1#
您需要为每个表创建一个索引;要索引的列是status和add\u分支。