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

优化Pandas批量执行SQL生成DataFrame并合并的性能问题

性能优化求助:批量日期SQL查询的Pandas性能瓶颈

需求背景

  • 现有一个名为s_dates的pandas.Series业务日期序列,需将每个日期与超参数传入func_sql_to_df函数(该函数负责构建SQL查询并返回pandas.DataFrame),最终合并为带业务日期标识的df_summary
  • 后续需完成两项操作:
    1. 将df_summary导出至Excel或CSV文件
    2. 按日期分组后对各列应用func_analysis函数

当前实现代码

df_summary = pd.concat(list(
    s_dates.apply(func_sql_to_df, args=hyper_param)
))
df_summary.groupby('dates').apply(func_analysis)

# 导出数据
...

问题现状

  • 共250个日期,df_summary的构建步骤耗时异常:前几次迭代约3秒,执行100次后单次迭代耗时增至3分钟以上且持续变长
  • 单独执行每个SQL查询耗时稳定(2-8秒),且每个查询返回的DataFrame行数一致
  • 已采用apply替代普通循环,且SQL语句已做大幅优化,现寻求性能提升方案

更新补充

更新1

当前实现方式与Stack Overflow某高赞推荐方案一致

更新2

提供使用的SQL查询语句,不确定是否可以一次性传入所有日期,因为WHERE子句中的条件需要对每个传入的日期单独生效:

select /*+ parallel(auto) */ 
         MY_DATE as EOD_DATE -- 对应传入的'dates'中的元素
       , Var2
       , Var3
       , ColA
       , ColB
       , ...
       , ColN
from Database1
where
    Var2 in (select Var2 from Datebase2 where update_time < MY_DATE) -- Cond1
and Var3 in (select Var3 from DataBase3 where EOD_DATE = MY_DATE) -- Cond2
and cond3
and cond4
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:35:14