提问者:小点点

快速导入整个SQL表(使用缓存?)


我使用DBI和RMySQL包从数据库导入整个表。 代码按预期工作。 我想知道有没有更快的方法可以多次导入同一个表? 例如,我导入表,做一些计算,关闭R会话,然后明天再次导入相同的表。 有没有一种方法以某种方式缓存那个表并以更快的方式导入相同的表?

代码示例(按预期工作):

library(RMySQL)
library(DBI)

# coonect to database
connection <- function() {
  con <- DBI::dbConnect(RMySQL::MySQL(), 
                        host = "91.234.xx.xxx", 
                        port = 3306L,
                        dbname = "xxxx",
                        username = "xxxx",
                        password = "xxxx",
                        Trusted_Connection = "True")
}

# imoprt
db <- connection()
vix <- DBI::dbGetQuery(db, 'SELECT * FROM VIX')
invisible(dbDisconnect(db))

共1个答案

匿名用户

将表存储为。rds怎么样?
根据我的经验,如果将文件存储在本地驱动器上,它将比查询DB快很多数量级。

#Save:
saveRDS(vix,file = 'vix.RDS')

#Load:
vix <- readRDS('vix.RDS')

您可以使用microbenchmark来测试差异。