r - RPostgreSQL 中的查询非常慢
问题描述
目前,我正在使用对 PostgreSQL 数据库的多个查询(主要是 SELECT 和 INSERT 语句)构建一个闪亮的应用程序。该应用程序有效,但我正在努力使其更快。当我比较使用 RPostgreSQL 包和像 Postico 这样的数据库客户端的同一查询之间的执行时间时,使用 RPostgreSQL 包需要 8 倍以上的时间。
任何关于提高性能或从 R 连接到 PostgreSQL 数据库的方法的想法?
谢谢
解决方案
你听说过这个包dbplyr
(带有b)吗?
我会推荐它,因为这个包使您的dplyr
(没有b)可以与 SQL 数据库一起使用。
由于您与数据库交互的方式将发生变化,因此有很多优势
由此:
对此:
这些图像是从Edgar Ruiz (2017)的一篇题为“使用 R 的数据库”的精彩文章中提取的。您应该在这里查看更多详细信息。
Ruiz 先生提出的主要优势是,我引用:
" 1) 对所有数据进行数据探索——我们可以专注于分析数据库中的数据,而不是制定计划来决定要导入哪些数据,这反过来应该会产生更快的洞察力。
2) 使用 SQL 引擎运行数据转换 - 实际上,我们正在将计算推送到数据库,因为 dplyr 正在向数据库发送 SQL 查询。
3) 收集目标数据集——在熟悉数据并选择将要共享或建模的数据点之后,可以使用最终查询仅将该数据带回 R 中的内存。
4) 你所有的代码都在 R 中!- 因为我们使用 dplyr 与数据库进行通信,所以无需更改语言或工具来执行数据探索。"
因此,您可能会通过dbplyr
/dplyr
获得所需的速度。
你应该试一试。
您可以在以下位置找到有关它以及如何使用DBI包与您的 PostgreSQL 服务器建立连接的更多信息:
https://cran.r-project.org/web/packages/dbplyr/vignettes/dbplyr.html
和
推荐阅读
- r - 在基础 R 中,根据其 y 值更改点颜色
- java - Spark如何实现任务之间的内存公平?
- javascript - Django : input field dropdown for receiver customized based on sender
- reactjs - 反应:纱线启动错误
- pandas - VS Code 的 Jupyter 扩展的最新版本中缺少水平滑块
- java - 用数字和字母调整棋盘 JavaFX 的大小
- python - 使用 numpy 获得两个 ND(3-D)矩阵的点积的正确方法是什么?
- post - ACF Post 对象未提取正确的精选图像
- java - 无法将 .war 文件部署到 AWS 实例上的 Tomcat
- python - 如何使用 weasyprint python 将 HTML 转换为 PDF