我是数据库新手,我正在努力寻找一个处理大型数据集的好方法。我主要使用R进行统计分析,因此不需要数据库作为网页的后端或任何其他内容。通常,数据集是静态的-它们只是很大的。

我试图在〜1,400,000表上做一个〜10,000,000记录表的简单左连接。 1.4 m的桌子有独特的记录。搅拌了3个小时后,它就消失了。查询已正确指定-我运行它将检索限制为1000条记录,并且返回的结果完全符合我的预期。最终,我找到了一种将其拆分为10个查询并运行的方法,但是到了此时,我能够很快在R中进行合并,而无需花哨的调用sqlite和进行索引。

我一直在使用数据库,因为我认为它们对于这些基本数据操作而言更快/更有效,但也许我只是忽略了一些东西。在上面的示例中,我已经在适当的列中建立了索引,而令我惊讶的是sqlite无法处理它,而R却可以。

抱歉,如果这个问题有点模糊(我对数据库有点模糊),但是如果有人对明显的问题有任何建议,我在做错事情以至于无法利用sqlite的功能,那就太好了。还是我只是期望其中的大部分,而100 m X 1.4 m的记录合并太大而无法执行而不将其拆分?

我认为数据库在这方面可以胜过R吗?

谢谢!

EXL

最佳答案

我正在经历相同的过程。如果您浏览我最近提出的问题,您可能会得到一些很好的指示,或者至少避免了很多我浪费的时间:)。简而言之,这对我最有帮助。

-RSQLite

-RSQLite.extfuns

-SQLite FAQ

我仍然是新手,但总的来说,您应该使用SQLite设置子集,这些子集太大而无法导入RAM。我认为,如果数据足够小以在RAM中处理,那么最好使用本机R工具进行联接/子集。如果您发现对SQL查询更熟悉,则可以使用sqldf包。此外,JD Long对于将sqldf与大型数据集结合使用具有很好的discussion效果。

10-07 19:11
查看更多