Python MySQL性能:在mysql命令行运行快,但cursor.execute慢

0 投票
1 回答
797 浏览
提问于 2025-04-16 00:53

我正在写一个脚本,用来导出一些数据。

关于环境的一些细节:

  • 这个项目是基于Django的
  • 我使用的是原始的/自定义的SQL来进行导出
  • 数据库引擎是MySQL。
  • 数据库和代码在同一台机器上。

关于SQL的细节:

  • 有很多内部连接(inner joins)
  • 选择了很多列,有些还进行了简单的乘法计算。
  • SQL的结果大约有55000行数据

当我在mysql命令行中运行这个SQL语句时,耗时大约3到4秒。

但是当我在我的Python脚本中运行这个SQL时,执行到cursor.execute(sql, [id])这一行却花了超过60秒。

有没有人知道可能是什么原因导致的?

1 个回答

0

有两个建议:

  1. 你的MySQL可能开启了查询缓存,这样每次重复运行相同的查询时,得到的时间可能不准确。你可以试着在查询中更改一下ID,看看它是否真的能稳定地在3到4秒内完成。

  2. 可以尝试使用strace工具来观察Python程序在这段时间内在做什么。

撰写回答