【发布时间】:2021-05-29 14:29:08
【问题描述】:
我将 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)
【问题讨论】:
-
您是从云实例或相对较慢的网络连接中拉下这些行吗?每分钟 100 万行等于每秒 16700 行,这并不算慢(大约是我本地 LAN 连接速度的一半)。
-
所有记录都是使用 python 的 sqlachemy 执行命令获取的。为此,花费了 12 个多小时(获取大约 1100 万行和 58 列)。服务器安装在运行 python 代码的同一台计算机上。没有局域网或云访问。这台计算机有 32 GB 内存和一个 12 核的 AMD 处理器,使用 MS Windows 10 pro。
-
我还观察到在这些过程中磁盘被大量使用
标签: python mysql python-3.x pandas sqlalchemy