尝试让数据库尽可能多地进行过滤和放大处理尽可能。数据库有比R更多优化操作的方法,并且不受RAM严重限制。它还减少了必须通过网络传输的数量。
常见的策略是
- 使用
WHERE
子句减少行数
- 明确列出(仅限必要的)列,而不是使用
*
- 尽可能多地在SQL中进行聚合(例如,
GROUP BY
+ MAX
)
- 使用
INSERT
查询从表到表写入,因此数据甚至不需要通过R。
我认为RMySQL应该比新的odbc
包更快,但是值得尝试。
什么是'永远'? 5分钟还是5个小时?一旦数据到达R,事情仍然缓慢吗?如果事情仍然太慢而不可行,请考虑升级到类似sparklyr的内容。