【发布时间】:2010-11-30 02:20:00
【问题描述】:
我是数据库的新手,我正在尝试找出一个处理大型数据集的好解决方案。我主要使用 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
【问题讨论】:
-
我认为您的查询有问题(在效率方面)。如果您发布它,应该有人可以提供帮助。
-
您是否正在索引您的表?例如,在表模式中,有类似“CREATE INDEX mapping_ind ON mapping (id);”的内容- 我发现通过在我想加入的字段上创建索引来加速 sqlite3 加入。
-
正如已经指出的那样,它通常会归结为与您的查询相关的表/索引设置。