Python 从MySQL读取sql()的速度非常慢
我将MySQL与pandas和sqlalchemy一起使用。然而,这是非常缓慢的。对于一个有1100万行的表,像这样一个简单的查询需要11分钟以上的时间才能完成。哪些操作可以改善此性能?提到的表没有主键,仅由一列索引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
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。这要好得多,尽管我相信在其他方面仍有改进的余地。