视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql-sql语句的查询优化,各位看看可以怎么优化,新人初学,SQL有点复杂,压力山大。。。。。
2020-11-09 16:42:25 责编:小采
文档
 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的查询结果

下载本文
显示全文
专题