以下是对您提供的 PostgreSQL 查询语句进行优化的建议:

with issue as (
  select cmm_id, string_agg(l3_flag, ';') as l3_flag,
  string_agg(care_id, ';') as care_id,
  string_agg(care_name, ';') as care_name,
  string_agg(ump_id, ';') as issue_id
  from t_issue_track_summary_info
  where deleted is null
  group by cmm_id
)
Select collect.id,
case when issue.l3_flag is null then '' else issue.l3_flag End as L3flag,
issue.care_id,
case when issue.care_name is null then '' else issue.care_name End 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 200

优化建议:

  1. 索引优化:

    • t_issue_track_summary_info 表上添加 deleted 列的索引,可以加快 deleted is null 条件的查询速度。
    • t_dts_collect 表上添加 is_deleted 列和 version_id 列的索引,可以加快 collect.is_deleted = 0collect.version_id = '23735486' 条件的查询速度。
    • t_dts_details 表的 create_time 列上添加索引,可以加快排序操作的速度。
  2. 连接类型优化:

    • 如果可以确保 t_patch_infot_dts_details 表的连接数据是完整的,可以考虑使用内连接 (INNER JOIN) 替代左连接 (LEFT JOIN),可以提升连接效率。
  3. 字符串拼接优化:

    • 如果可能的话,可以考虑将 string_agg 等字符串拼接操作移动到应用层进行,减少数据库的计算量和数据传输量。
  4. 分页查询优化:

    • 可以考虑使用分页查询来代替 limit 语句,例如使用游标或窗口函数实现分页查询,提高查询效率。
  5. 其他优化:

    • 确保查询语句中的字段名称和表名使用正确的大小写,避免出现错误。
    • 使用 EXPLAIN 命令分析查询语句的执行计划,找出性能瓶颈,并根据执行计划进行优化。

总结:

以上是优化 PostgreSQL 数据库查询语句的一些常见建议,请根据您的具体情况选择适合的优化策略。通过合理优化,您可以提升查询速度和效率,提高数据库性能。

PostgreSQL 数据库查询语句优化指南:提升性能与效率

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

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