You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化两条SELECT语句以优化存储过程执行效率?

合并查询优化方案

当然可以将这两条语句合并为一条,利用条件聚合实现一次扫描表同时计算出两个结果,避免重复扫描大表带来的额外耗时。

合并后的代码如下:

SELECT
    SUM(CASE WHEN Cmt.BALANCE_TD < 0 THEN Cmt.BALANCE_TD ELSE 0 END) AS op_overspent_codes,
    SUM(CASE WHEN Cmt.BALANCE_TD > 0 THEN Cmt.BALANCE_TD ELSE 0 END) AS op_underspent_codes
FROM CODES_MONTHLY_TABLE Cmt
WHERE 
    Cmt.id = :ip_id 
    AND (Cmt.THEMONTH - 1) = :ip_currentmonth
INTO :op_overspent_codes, :op_underspent_codes;

优化说明

  • 原代码两次查询会重复扫描符合条件的数据集,合并后仅需一次表扫描,在数据量较大时能大幅降低IO开销。
  • 语句依然可以利用已创建的Cmt.id索引,保证查询效率。
  • CASE WHEN会分别筛选出余额小于0(超支)和大于0(未超支)的记录,SUM聚合计算各自的总和;余额等于0的记录不影响结果,ELSE 0可确保这类记录不会干扰统计值。

内容的提问来源于stack exchange,提问作者Yuppski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:48:09