首页 > 解决方案 > RPostgreSQL 中的查询非常慢

问题描述

目前,我正在使用对 PostgreSQL 数据库的多个查询(主要是 SELECT 和 INSERT 语句)构建一个闪亮的应用程序。该应用程序有效,但我正在努力使其更快。当我比较使用 RPostgreSQL 包和像 Postico 这样的数据库客户端的同一查询之间的执行时间时,使用 RPostgreSQL 包需要 8 倍以上的时间。

任何关于提高性能或从 R 连接到 PostgreSQL 数据库的方法的想法?

谢谢

标签: rpostgresqlshinyrpostgresql

解决方案


你听说过这个包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

https://rviews.rstudio.com/2017/05/17/databases-using-r/


推荐阅读