如何从 dbconnect 数据库加速 collect()

How to speed up collect() from a dbconnect database

我正在从 amazonaws 服务器上的 odbc 驱动程序读取 tables。 我在 64 位 windows 计算机上使用 R 4.0.0。 在家工作并使用公司的 VPN,所以我的网速约为 17 Mbps 下载。

我用这条语句连接到数据库 con <- dbConnect(odbc::odbc(), "databasename", timeout = 10)

并且我使用此语句访问 table case_tbl <- tbl(con, dbplyr::in_schema("fhv_owner", "案例")) 案例<-收集(case_tbl)

table 有 500K 行和 60 列,所以它并不大,但下载大约需要 2 分钟。 如果我的网速慢,有时需要 30 分钟。

有什么办法可以加快速度吗?也许用 data.table 而不是 dplyr?

我尝试过滤我选择的列,但有时我需要更多列并且必须重新运行。

也许我只是需要为更快的互联网付费。

谢谢, 詹妮弗

因为你不在这里做任何数据操作data.table不会帮助你加快这个过程。
为确保延迟是由于您的互联网连接速度引起的并且与 dbplyr 无关,请直接使用 DBI:

library(DBI)
con <- dbConnect(odbc::odbc(), "databasename", timeout = 10)
system.time({case_tbl <- dbGetQuery(con, "SELECT * FROM fhv_owner.case")})

根据您的用例和数据库系统,将 odbc::odbc() 替换为 RPostgres::Postgres() 可能是有意义的(如果您有一个 postgres 数据库,否则还有其他软件包...) .这至少对我帮助很大!