MySQL 的 read_sql() 非常慢

2024-05-03

我将 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)

您可以尝试我们的工具连接器x https://github.com/sfu-db/connector-x (pip install -U connectorx)。它是用 Rust 实现的,旨在提高pandas.read_sql。 API 基本相同pandas。例如,在您的情况下,代码将如下所示:

import connectorx as cx
conn_url = "mysql://root:[password]@localhost:port/my_database"
query = "select * from my_table"
df = cx.read_sql(conn_url, query)

如果查询结果中有像 ID 一样均匀分布的数字列,您还可以通过利用多个核心来进一步加快该过程,如下所示:

df = cx.read_sql(conn_url, query, partition_on="ID", partition_num=4)

这将通过过滤将整个查询分成四个小查询ID列和connectorx将并行运行它们。您可以查看here https://github.com/sfu-db/connector-x#examples了解更多用法和示例。

Here is the benchmark result loading 60M rows x 16 columns from MySQL to pandas DataFrame using 4 cores: mysql time mysql memory

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 的 read_sql() 非常慢 的相关文章

随机推荐

  • 在 Objective C 中获取第一响应者

    我无法弄清楚哪个UITextField是当前的第一响应者 我想做的是 如果用户单击特定的内容 则设置一个布尔值UITextField 因此 要做到这一点 我需要能够判断这个特定的文本字段是否已成为第一响应者 我知道如何设置第一响应者 但只是
  • 如何修复 git 子模块错误 fatal: Needed a single revision Unable to find current origin/master revision in submodule path?

    我不断收到这个问题 fatal Needed a single revision Unable to find current origin master revision in submodule path coq serapy 我试过了
  • 为选择器中的项目添加键值

    我正在使用 XAMARIN 选择器来选择一个国家 地区 这些国家 地区在选择器中进行了硬编码 有没有一种方法可以通过键值识别每个国家 地区名称 我使用 SAPUI5 以类似的方式完成了此操作
  • “赠送”应用内购买 Android

    有没有办法将 Google Billing 中的应用内购买 赠送 给特定帐户 我把这个问题放在这里是因为如果有一种方法可以以编程方式完成它 那很好 但不是必须的 在官方文档中找不到任何相关内容 我想要这个的原因是因为我的一个应用程序目前处于
  • 在 Maven 中解决或编译循环依赖关系 [重复]

    这个问题在这里已经有答案了 我有一个有趣的问题 而不是寻找a解决方案 我正在寻找解决方案s Alice 项目有一个 pom xml 在其中 pom 说她被包装成一个罐子 虽然她是一个坚强的女人 但她依赖鲍勃 鲍勃项目是一个互补主义者 他说他
  • 如何根据另一个属性向 XML 节点添加一个属性?

    我有以下 XML
  • Excel 2007 Visual Basic 编辑器:占用空格,四处移动光标

    我无法解决这个问题 我发现了类似的问题here https stackoverflow com questions 1164138 vba editor auto deletes spaces at the ends of lines bu
  • 箱线图与箱线图有何不同?

    我想知道当我们在海生图书馆中有箱线图时为什么会有箱线图 我知道一件事是箱线图优化了表示数据的方式 特别是对于大型数据集 但我不知道为什么 除此之外 我没有任何充分的理由使用箱线图 箱线图将中位数显示为中心线 第 50 个百分位数 然后将第
  • 隐藏控制台并执行 python 脚本

    我正在尝试使用 pyinstaller 在 Windows 10 上使用 pyqt5 模块编译在 python 3 中构建的 python 脚本 该脚本在运行时隐藏窗口 为了编译我的脚本 我执行了以下命令 pyinstaller onefi
  • 防止左浮动 div 转到新行

    我有 4 个 div 设置为向左浮动 但最后的 div 不断在较小的屏幕上换行两个新行 这真的很烦我 我希望它们随屏幕尺寸缩放 以便它们始终保持在同一行上屏幕尺寸 并且我尝试不使用桌子 这非常诱人 因为他们对此非常可靠 我想知道如何解决这个
  • R 对等证书无法使用给定的 CA 证书进行身份验证,Windows

    当尝试使用导入谷歌工作表时gs read 函数 我收到以下错误消息 在curl curl fetch memory url handle handle 中出错 对等 无法使用给定的 CA 证书对证书进行身份验证 我正在关注这个vignett
  • Julia 1.6.2 未出现在 Jupyter 笔记本中

    我已经根据这个网站安装了 julia 1 6 2 jupyter notebook 和 anaconda 3 https datatofish com add julia to jupyter https datatofish com ad
  • 如何检测图像中对象的实例?

    我有一张包含几个特定对象的图像 我想检测这些物体在该图像中的位置 为此 我有一些模型图像 其中包含我想要检测的对象 这些图像在我想要检测的对象实例周围得到了很好的裁剪 这是一个例子 在这张大图里 我想检测此模型图像中表示的对象 自从你最初发
  • 使用 Swift 获取 UITableViewCell 中 UITextField 的 indexPath

    因此 我正在构建一个详细视图控制器应用程序 它显示一个包含两部分单元格的表格 标签和文本字段 我正在尝试检索文本字段值并将其添加到数组中 我尝试使用 textField superview superview 技术 但没有成功 func t
  • Android - GC 滞后于列表视图滚动“更大”的图像

    在列表视图中 我想在列表条目上绘制一个图像 这 20 张图像必须缩放以填充垂直模式的宽度 手机分辨率为 480 x 800 像素 SGS2 图像分辨率为 400x400 大小约为 100KB 我已将图像放在可绘制文件夹中 当我滚动列表时 它
  • 如何搜索 Google 电子表格?

    我正在进行一些详尽的搜索 需要确定电子表格中是否已存在新域 URL 然而 所有 Spreadsheet 对象都没有搜索功能 即大多数 Document 对象中的 findText 功能 我觉得我错过了一些重要的事情 我缺少什么 查找文本函数
  • 在开始 Web 开发项目之前,您如何估计要花费的时间? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当你告诉你的客户或经理这可以在10天内完成 但你花了20天才得到一个点 甚至还没有部署到现场时 感觉真的很糟糕 任何经验都可以与我分享您是如何估
  • WPF 绑定默认模式

    在我的一个应用程序中 我有这样的代码
  • RestClient发送IFormFile

    我从我的控制器收到一个文件 public async Task
  • MySQL 的 read_sql() 非常慢

    我将 MySQL 与 pandas 和 sqlalchemy 一起使用 然而 它的速度非常慢 对于一个包含 1100 万行的表 一个简单的查询需要 11 分钟以上才能完成 哪些行动可以改善这种表现 提到的表没有主键 并且仅由一列索引 fro