您好,欢迎访问一九零五行业门户网

mysql-sql 语句的查询优化,各位看看可以怎么优化,新人初学,SQL有点复杂,压力山大

mysql优化sql
如下 项目用的是 mysql 是项目的查询sql语句, 查询结果为 88 的竟然要1分40秒, 结果为5的要 2秒,
sql语句不是我写的,大家看看有什么地方可以优化的,想要优化查询速度的话,可以从哪方面入手修改。
select count(distinct ttsp.id) as postpone_count, ttp.task_document_id as task_document_id, ttm.id as attention_id, tt.company_id, tt.create_by, ts.name as principal, ts.staff_id as principal_id, tt.postpone_time, tt.subtask_bind_step_id, tt.current_task_step_id, tt.create_time, tts.task_step_id as has_taskstep, tts2.current_task_step, tt.po_predict_work_load, tt.task_priority, tt.expect_end_time, tts2.executor, tt.start_time, tt.end_time, tt.type, tta.task_annex_id as annex, tt.task_id as id, tt.title as name, case when ( (select count(*) from t_task_step where task_id = tt.task_id and del_flag = 0) > 0 ) then 'closed' when ( (select count(*) from t_task where pid = tt.task_id and del_flag = 0) > 0 ) then 'closed' else 'open' end as state, '3' as style, tt.author as task_author, tt.work_load as task_work_load, tm.comment as content_comment, tn.comment as time_comment, tq.comment as other_comment, tnn.comment as inner_comment, concat(tt.task_id, '_t') as id_type, sum(tw.workload) count_workload, tt.pid, case when tt.task_priority = '1' then 'task-emergency' when tt.task_priority = '2' then 'task-imprtant' when tt.task_priority = '3' then 'task-general' else 'task-normal' end as iconcls from t_task tt left join t_task_step tts on ( tt.task_id = tts.task_id and tts.del_flag = '0' ) left join t_workload tw on ( tts.task_step_id = tw.task_step_id and tw.del_flag = '0' ) left join t_task_content ttc on ( tt.task_id = ttc.task_id and ttc.del_flag = '0' ) left join (select * from t_task_annex order by task_annex_id desc) tta on ( tt.task_id = tta.task_id and tta.del_flag = '0' and tta.annex is not null ) left join t_project tp on tt.project_id = tp.project_id left join t_company tco on tt.company_id = tco.company_id left join (select foreign_id, comment, create_time from t_comment where del_flag = '0' and type = 2 and comment_type = 0 order by create_time desc limit 0, 1) as tm on tt.task_id = tm.foreign_id left join (select foreign_id, comment, create_time from t_comment where del_flag = '0' and type = 2 and comment_type = 1 order by create_time desc limit 0, 1) as tn on tt.task_id = tn.foreign_id left join (select foreign_id, comment, create_time from t_comment where del_flag = '0' and type = 2 and comment_type = 2 order by create_time desc limit 0, 1) as tq on tt.task_id = tq.foreign_id left join (select foreign_id, comment, create_time from t_comment where del_flag = '0' and type = 2 and comment_type = 3 order by create_time desc limit 0, 1) as tnn on tt.task_id = tnn.foreign_id left join (select task_step_id, type as current_task_step, to_staff as executor, to_staff_email as executor_email from t_task_step where del_flag = '0') tts2 on tts2.task_step_id = tt.current_task_step_id left join t_staff ts on (tt.executor = ts.staff_id) left join (select ttp.task_id, group_concat(producttype_id separator ',') as producttype_id, task_document_id from (select ttp.producttype_id, ttp.task_id, ttdl.task_document_id from t_task_producttype_link ttp left join (select producttype_id, group_concat(id separator ',') as task_document_id from t_task_document_type_link group by producttype_id) ttdl on ttp.producttype_id = ttdl.producttype_id) ttp group by task_id) ttp on ttp.task_id = tt.task_id left join t_task_step_postpone_history ttsp on ttsp.foreign_id = tt.task_id and ttsp.type = 0 and ttsp.del_flag = 0 left join (select * from t_task_myattention where user_id = '202b293f-da58-4cd3-b12d-40e4f9ce0d2c') ttm on ttm.task_id = tt.task_id where tco.del_flag = '0' and tt.del_flag = '0' and tp.del_flag = '0' and tt.project_id = 44 and tt.pid is null group by tt.task_id order by tt.task_id desc
这是 explain的查询结果
其它类似信息

推荐信息