迭代 MySQL 连接器游标时 Python 速度很慢

yln*_*nor 5 python mysql cursor fetchall mysql-connector-python

我有以下运行速度非常慢的代码(迭代 57,390 行需要 6.5 秒):

import mysql.connector

cnx=mysql.connector.connect(host=***, ***)
cursorSQL = cnx.cursor()

for dt in date_vect:
        cursorSQL.execute(query2, ((dt[0] + '-00:00:00'), (dt[0] + '-23:59:59'))) 
          #Takes about 0.25sec per iteration
        usr_list = list(cursorSQL.fetchall())  
          #takes about 6.20sec per iteration
Run Code Online (Sandbox Code Playgroud)

正如这里推荐的:Stackoverflow:Python 在...时很慢,我试过:

  • usr_list= cursorSQL.fetchall()
  • usr_list= list(cursorSQL.fetchall())

正如@postoronnim 所建议的,我也尝试过:

  • usr_list= cursorSQL.fetchmany(57390)

没有成功。

然而,有一些缓存效果,因为在第二次运行时相同的迭代只需要 0.5 秒,然后又减慢到 6.5 秒。

  1. 任何想法可能来自哪里?
  2. 你能确认它与我的数据库无关吗,因为所有从MySQL的导入都是在线完成的cursor.executefetchall()缓慢只是由于列表处理?
  3. 你能解释一下为什么会有缓存效应吗?

谢谢。

规格:Python 3.5 | 8核i7 | 16go 公羊