r - 使用 RMySQL 包的 dbGetQuery 查询多个表

标签 r multiple-tables sqldf rmysql dbconnection

在 dbConnect 的帮助下,与 SQL 数据库(例如 DB1 和 DB2)建立了多个连接。如何编写涉及 DB1 和 DB2 表的查询? dbGetQuery 是否只允许查询一个数据库?建立数据库连接后可以利用 sqldf 包吗?

最佳答案

这不是您要找的答案,但我遇到了同样的问题。

简而言之,我会放弃在 SQL 中的 1 个(或多个)数据库中的表之间进行任何连接/分组/子查询的想法。使用 R 中较新的大数据包,特别是 dplyr 或 data.table 几乎没有必要。我能想到 SQL 更快的唯一异常(exception)是当您的查询结果大到足以占用太多 RAM 时。

对我来说一个有趣的用例如下:我来自 MPP 数据库的表大约有 20B 行。问题:查询整个 2M 行的结果集,并使用 dplyr::group_by() 对 3 个变量进行分组,或者只在 SQL 中执行 GROUP BY 以返回 100k 行的最终结果。

在时间上,总会有一个转折点,即 R 或 SQL 更快,除了 MySQL 中的维表连接外,R 几乎总是更快。 (我的例子是关于我的硬件的临界点。)

由于 dplyr 与 SQL 一样易于使用,我不确定我们是否需要再问这个问题。

关于r - 使用 RMySQL 包的 dbGetQuery 查询多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073703/

相关文章:

R将脚本对象加载到工作区

r - 从长格式数据框中提取基线值

r - ggplot2:具有两个变量的多层图的facet_wrap失败

php - SELECT 限制为仅基于来自单独表的 CSV 列表的结果

mysql - sqldf 在使用子查询时出错

python - 使用 pandas 和 sqldf 没有这样的表错误

r - 在sqldf中将数字转换为字符

r - 从大型数据集中生成重复数据的子集

MySQL 多条件多表查询

sql - 数据库表;将它们散开,还是将它们归零?