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

如何仅修改SELECT语句降低含SUM与JOIN的SQL查询成本

原因说明

你观察到两个查询成本完全一致,是因为数据库优化器自动做了连接消除优化:

  • 你的业务中CARS表的C_ORDERKEY是指向ORDERS表O_ORDERKEY的外键,且O_ORDERKEY是ORDERS表的主键/存在唯一约束
  • 原查询中完全没有使用ORDERS表的任何字段,也不会因为JOIN过滤或新增数据行
    所以优化器在生成执行计划时直接删掉了ORDERS表的关联逻辑,两个SQL实际执行的操作完全相同,执行计划和成本自然没有差异。

仅修改SELECT语句的优化方案

当前执行计划的瓶颈是CARS表的全表扫描,要降低成本只需要让查询走覆盖索引即可:
如果CARS表上已经存在C_QUANTITY列的单列索引,你可以添加优化器提示强制走索引,Oracle写法参考:

SELECT /*+ INDEX(CARS 你的C_QUANTITY列索引名) */ SUM(C_QUANTITY)
FROM CARS;

如果还没有对应索引,仅修改查询语句无法降低成本,因为求和操作必须遍历所有C_QUANTITY的值,全表扫描是不可避免的,你需要额外创建C_QUANTITY列的单列索引,优化器会自动选择走索引扫描,成本会远低于全表扫描。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:42:04