我打算用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获取相同的数据时,事情发生的速度要快得多。
在这种情况下,可以做些什么来提高性能?替代图书馆?诡计和黑客?还有什么吗?
答案 0 :(得分:1)
您应该排除ORDER BY
- 这不是加载数据的一部分。它可能会显着减慢您的查询速度
您可以在将数据存入R存储器之后对数据进行排序。如果您正在寻找快速订购,请查看SO answer。
答案 1 :(得分:0)