我有这个查询需要更多时间执行约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分钟
如何减少这个执行时间?
答案 0 :(得分:2)
注意 - 你真的需要为我们展示执行计划,看看问题是什么......
通过将值替换为值语句,有时可以获得改进。不知道它是否会有所帮助,但你可以尝试这样做。
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