Примите отсчет клиента всех клиентов специфических к региону и

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 fot, принимая количество клиентов.

Проблема

Этот запрос занимает большую нагрузку на нашем сервере баз данных.Как оптимизировать этот запрос так, чтобы поиск в базе данных занял меньше минуты.Я попытался упростить запрос с помощью соединений, но безуспешно.

Решение, которое я нашел

Записывая счет в таблицу и используя новую таблицу, я отображаю его на новую страницу.Я знаю, что это хорошее решение, но кажется, что это не прямое решение.Так что если вы, ребята, знаете любое другое решение моей проблемы, пожалуйста, поделитесь.

1 ответ

  1. Необходимо создать один индекс для каждой таблицы; индексируемые столбцы-status и add_branch.