以下是优化建议:

  1. 索引优化:确保所有连接字段和过滤字段都有适当的索引。特别是,确保t_dts_collect表的is_deleted和version_id字段以及t_issue_track_summary_info表的deleted字段都有索引。

  2. 子查询优化:对于issue子查询,可以考虑将聚合函数移动到主查询中,使用LEFT JOIN连接来获取相关的聚合结果。这样可以避免不必要的子查询。

  3. 字符串拼接优化:使用数组聚合函数array_agg替代string_agg函数,这样可以更高效地进行字符串拼接。

优化后的语句如下:

WITH issue AS ( SELECT cmm_id, array_agg(l3_flag) AS l3_flag, array_agg(care_id) AS care_id, array_agg(care_name) AS care_name, array_agg(ump_id) AS issue_id
FROM t_issue_track_summary_info
WHERE deleted IS NULL GROUP BY cmm_id ) SELECT collect.id, COALESCE(issue.l3_flag, ARRAY['']) AS L3flag, issue.care_id, COALESCE(issue.care_name, ARRAY['']) AS CareName, issue.issue_id, collect.patch_plan, collect.patch_id, collect.cur_step, collect.turns, collect.cur_test, ... FROM t_dts_collect collect LEFT JOIN t_patch_info patch ON collect.patch_id = patch.id LEFT JOIN t_dts_details details ON collect.dts_biz_no = details.dts_biz_no LEFT JOIN t_dts_details details_parent ON details.parent_no = details_parent.dts_biz_no LEFT JOIN issue ON collect.dts_biz_no = issue.cmm_id WHERE collect.is_deleted = 0 AND collect.version_id = '23735486' AND collect.patch_plan IN ('CP2118') ORDER BY details.create_time DESC LIMIT 20

pgsql数据库怎么优化下面语句with issue as select cmm_idstring_aggl3_flag ; as l3_flagstring_aggcare_id ; as care_idstring_aggcare_name ; as care_namestring_aggump_id ; as issue_id from t_issue_track_summary_info

原文地址: http://www.cveoy.top/t/topic/iMpZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录