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

请求改写指定SQL查询语句以提升其执行性能

优化后的SQL查询语句

性能瓶颈分析

原查询存在几个影响性能的问题:

  • EXTRACT(YEAR FROM sale_date) 用函数包裹字段,导致sale_date上的索引无法被利用,数据库不得不全表扫描Sales表数据
  • JOIN条件疑似笔误(s.product.id应为s.product_id),不符合常规的表关联逻辑
  • GROUP BY product_id与SELECT中的p.product_name在部分数据库(如PostgreSQL、MySQL严格模式)中会触发语法错误,因为非聚合列未被包含在分组条件里

优化后的代码

SELECT 
  p.product_name, 
  SUM(s.sale_amount) AS total_sales 
FROM 
  Sales s
JOIN Product p ON s.product_id = p.product_id
WHERE 
  sale_date >= DATE_TRUNC('year', CURRENT_DATE)
  AND sale_date < DATE_TRUNC('year', CURRENT_DATE) + INTERVAL '1 year'
GROUP BY 
  p.product_id, p.product_name

优化说明

  • 索引友好的过滤条件:改用范围查询替代函数提取年份,让数据库能直接使用sale_date字段上的索引快速定位当年数据,大幅减少扫描行数
  • 修正关联逻辑:将疑似笔误的s.product.id修正为s.product_id,匹配Sales表存储产品ID的常规设计
  • 规范分组逻辑:把p.product_name加入GROUP BY,避免数据库语法校验错误,同时保证分组逻辑严谨(确保一个product_id对应唯一的product_name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:14:59