簡體   English   中英

減少執行SQL查詢的時間

[英]reduce time of executing sql query

我有此查詢需要更多的時間來執行大約25分鍾
執行

 select   
     T.ID,T.START_DT,T.PARENT_TASKID, TDS.name As TASK_DONE_STR, T.PROCESS_ID, T.PROCESS_STEP, T.EMP_ID, TTP.NAME AS task_type_STR, 
     T.MSG, T.MSG_E, T.FRM_CLASS, T.FRM_STYLE, T.FRM_ID, T.FRM_INITIALS, 
     P.CODE AS P_CODE ,P.name AS P_NAME,PDS.name As PROC_DONE_STR,E.EMP_CODE, E.emp_name As EMP_NAME, 
     T.days_normal,T.days_alarm1,T.days_alarm2  


     ,T.GROUP_ID,G.NAME As Grp_NAME,T.PARAM_4,T.IS_LOCKED,T.PARAM_5,T.PARAM_6, -- // Added
      case T.IS_LOCKED when 1 then 'محمي' else 'غير محمي' end As IS_LOCKED_STR, --  // Added
      P.BRANCH_ID ,br.STORE_HOUSES AS Branch_Name  

     ,CASE T.FRM_STYLE when 'sell_talabia' then 'طلبية بيع' when 'sell_add' then 'طلب صرف'  
        when 'sell_inv' then 'إذن تسليم' when 'sell_sub' then 'مرتجع تسليم' when 'sell_togaar' then 'فاتورة تجار'   
        when 'import_order_in' then 'أمر توريد داخلي'  when 'import_order' then 'أمر توريد خارجي'   
        when 'import_inv' then 'إذن إستلام' when 'import' then 'فاتورة شراء'   
        when 'tr_internal' then 'إذن تحويل' when 'import_back_request' then 'طلب إرتجاع شراء'   
        when 'import_back_order' then 'إذن إرتجاع شراء' when 'seller_Issue' then 'طلب صرف-مندوب'   
     END AS TASK_STYLE   
     ,T.ACCESS_DATA ,P.cust_id,c.CUST_CODE,C.CUST_NAME   
     ,P.CUST_ID,c.BIAN1, R.CODE,R.NAME  -- //Added by Waleed
     ,STD.STD_NAME,STD.STD_CRNT_STEP,STD_GROUP_KEY 
     ,STD.STD_WF_TASK_TYPE, CTYP.Name As STD_WF_TASK_TYPE_STR, STD.STD_TASK_KEY,STD.STD_FRM_KEY,P.VARS_ARY,T.VARS_ARY_BGN,T.VARS_ARY AS T_VARS_ARY 
     ,case T.IS_SCRIPT_DONE when 1 then 'نعم' else 'لا' end As IS_SCRIPT_DON_STRE  ,T.LAST_EXCEPTION,STD.STD_ON_INIT_SCRIPT,STD.STD_ON_DONE_SCRIPT 
     ,P.PARAM_6 AS Process_ServiceType   
  from  CRM_WF_TASK T  
  left join const_names TDS on T.DONE_STATE_DEF=TDS.id  
  left join const_names TTP on T.task_type_def=TDS.id  
  left join crm_wf_process P on T.process_id=P.ID  
  left join const_names PDS on P.DONE_STATE_DEF=PDS.id  
  left join employee E on T.emp_id=E.emp_id  
  left join OP_EMP_GROUP G on T.GROUP_ID=G.ID 
  left join BRANCHES_NAME Br on P.BRANCH_ID= br.ID 

  left join CRM_WF_STRUCT_D STD on T.STRUCT_ID_D=STD.STD_ID 
  left join Const_Names CTYP on STD.STD_WF_TASK_TYPE=CTYP.ID 
  LEFT  JOIN CUSTOMERS AS C left JOIN ACC_REGION AS R ON R.ID = C.REGION_ID ON P.CUST_ID = C.ID  

此查詢在我的應用程序中以100級運行
每個級別運行此查詢並花費15秒
然后15 * 100 = 1500秒
1500/60 = 25分鍾
執行需要25分鍾
如何減少執行時間?

注意-您確實需要顯示執行計划以供我們查看問題所在,但是...

您有時可以通過將值替換為case語句來獲得改進。 不知道是否有幫助,但是您可以嘗試這樣。

select   
     --- blah blah blah 
     COALESCE(FS_LOOKUP.V,'') AS TASK_STYLE,
     --  blah blah blah
 from  CRM_WF_TASK T  
 LEFT JOIN (
    Values
       ('sell_talabia'       ,'طلبية بيع' ),
       ('sell_add'           ,'طلب صرف'  ),
       ('sell_inv'           ,'إذن تسليم' ),
       ('sell_sub'           ,'مرتجع تسليم' ),
       ('sell_togaar'        ,'فاتورة تجار'   ),
       ('import_order_in'    ,'أمر توريد داخلي'  ),
       ('import_order'       ,'أمر توريد خارجي'   ),
       ('import_inv'         ,'إذن إستلام' ),
       ('import'             ,'فاتورة شراء'   ),
       ('tr_internal'        ,'إذن تحويل' ),
       ('import_back_request','طلب إرتجاع شراء'   ),
       ('import_back_order'  ,'إذن إرتجاع شراء' ),
       ('seller_Issue'       ,'طلب صرف-مندوب'   )
  ) AS FS_LOOUP(K,V) ON T.FRM_STYLE = FL_LOOKUP.K
  -- blah blah blah

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM