[英]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.