将数据从PostgreSQL加载到R的最快方法

时间:2014-02-04 12:40:17

标签: r performance postgresql

我打算用R做一些数据分析;数据集存储在PostgreSQL表中,其中一些包含多达200万条记录。我认为对于R来说这不是一个大问题,并且记录的加载会相当快,但结果却不同。

做这样的事情可能需要一分钟或更长时间,这不是我所期待的:

library(RPostgreSQL);

drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "mydb", user="me", password="my_password");

records <- dbGetQuery(con, statement = paste(
  "SELECT *",
  "FROM my_table",
  "ORDER BY id")); # 1.5M records

替代代码甚至更慢:

records2 <- dbSendQuery(con, "select * from my_table ORDER BY id")
fetch(records2,n=-1)

我不能说我的硬件是世界上最先进的,但它是一款相当不错的MacBook Pro,配备8G RAM和SSD。当我使用QGIS获取相同的数据时,事情发生的速度要快得多。

在这种情况下,可以做些什么来提高性能?替代图书馆?诡计和黑客?还有什么吗?

2 个答案:

答案 0 :(得分:1)

您应该排除ORDER BY - 这不是加载数据的一部分。它可能会显着减慢您的查询速度 您可以在将数据存入R存储器之后对数据进行排序。如果您正在寻找快速订购,请查看SO answer

答案 1 :(得分:0)

更多的重新设计而非回答问题,但......

您可以随时将R直接插入PostgreSQL,并在不将数据移动到任何地方的情况下运行查询。不能移动它比移动它更快:)

PL/R for PostgreSQL