Python MySQL性能:在mysql命令行运行快,但cursor.execute慢
我正在写一个脚本,用来导出一些数据。
关于环境的一些细节:
- 这个项目是基于Django的
- 我使用的是原始的/自定义的SQL来进行导出
- 数据库引擎是MySQL。
- 数据库和代码在同一台机器上。
关于SQL的细节:
- 有很多内部连接(inner joins)
- 选择了很多列,有些还进行了简单的乘法计算。
- SQL的结果大约有55000行数据
当我在mysql命令行中运行这个SQL语句时,耗时大约3到4秒。
但是当我在我的Python脚本中运行这个SQL时,执行到cursor.execute(sql, [id])这一行却花了超过60秒。
有没有人知道可能是什么原因导致的?
1 个回答
0
有两个建议:
你的MySQL可能开启了查询缓存,这样每次重复运行相同的查询时,得到的时间可能不准确。你可以试着在查询中更改一下ID,看看它是否真的能稳定地在3到4秒内完成。
可以尝试使用strace工具来观察Python程序在这段时间内在做什么。