Python 从MySQL读取sql()的速度非常慢

Python 从MySQL读取sql()的速度非常慢,python,mysql,python-3.x,pandas,sqlalchemy,Python,Mysql,Python 3.x,Pandas,Sqlalchemy,我将MySQL与pandas和sqlalchemy一起使用。然而,这是非常缓慢的。对于一个有1100万行的表,像这样一个简单的查询需要11分钟以上的时间才能完成。哪些操作可以改善此性能?提到的表没有主键,仅由一列索引 from sqlalchemy import create_engine import pandas as pd sql_engine_access = 'mysql+pymysql://root:[password]@localhost') sql_engine = create

我将MySQL与pandas和sqlalchemy一起使用。然而,这是非常缓慢的。对于一个有1100万行的表,像这样一个简单的查询需要11分钟以上的时间才能完成。哪些操作可以改善此性能?提到的表没有主键,仅由一列索引

from sqlalchemy import create_engine
import pandas as pd
sql_engine_access = 'mysql+pymysql://root:[password]@localhost')
sql_engine = create_engine(sql_engine_access, echo=False)
script = 'select * from my_database.my_table'
df = pd.read_sql(script, con=self.sql_engine)

虽然可能不是性能低下的全部原因,但一个促成因素是PyMySQL(
mysql+PyMySQL://
)在重载下可能比mysqlclient(
mysql+mysqldb://
)慢得多。在一个非常非正式的测试中(没有多次运行,没有平均值,没有服务器重新启动),我使用
df.read\u sql\u query()
对一个本地MySQL数据库看到了以下结果:

检索到的行 mysql+mysqldb(秒) mysql+pymysql(秒) 1_000_000 13.6 54 2_000_000 25.9 114.1 3_000_000 38.9 171.5 4_000_000 62.8 217 5_000_000 78.3 277.4
您是从一个云实例或一个相对较慢的网络连接中删除这些行吗?每分钟一百万行的速度是每秒16700行,这并不是非常慢(大约是我本地局域网连接速度的一半)。所有记录都是使用python中的sqlachemy execute命令获取的。为此,花费了12个多小时(获取了约1100万行和58列)。服务器安装在运行python代码的同一台计算机上。没有局域网或云访问。这台计算机有32 gb内存和一个12核的AMD处理器,使用MS Windows 10 pro。我也注意到在这些过程中磁盘被大量使用。谢谢你的回答和改进我的问题。事实上,我改为“mysql+mysqldb/”,我的查询转到了4而不是11。这要好得多,尽管我相信在其他方面仍有改进的余地。