我计划使用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)
我不能说我的硬件是世界上最先进的,但它是一个相当不错的8G内存和固态硬盘的MacBook专业版。当我使用QGIS获取相同的数据时,处理速度会快很多。
在这种情况下,可以做些什么来提高性能?备用库?技巧和技巧?还要别的吗?
发布于 2016-01-10 06:55:32
您应该排除ORDER BY
-这不是加载数据的一部分。这可能会显著降低您的查询速度。
您可以对数据进行排序,然后将它们放入R内存。如果您正在寻找快速订购,请检查此SO answer。
发布于 2014-05-14 05:56:09
与其说是对问题的回答,不如说是重新设计,但是...
您可以直接将R插入到PostgreSQL中,并在不移动数据的情况下运行查询。不能比完全不移动更快地移动它:)
PL/R for PostgreSQL
https://stackoverflow.com/questions/21552857
复制相似问题