我正在尝试将表 df1 与 df2 连接起来。问题是 df2 是一个非常长的表,有 4000 万个观察值,在等待超过 48 小时后,我无法在 MySQL 中获得连接结果。所以想问问有没有什么办法可以提高这个join的效率。我已经在两个表的 Tag 列上添加了索引。
df1 和 df2 具有相同的结构,这里是一个示例:
|Id |Tag
| -------- | --------------------------------------------
|1 |c#
|1 |winforms
|1 |type-conversion
|1 |decimal
|2 |.net
|2 |decimal
|3 |.net
|3 |math
两个表都有两列,Id 和 Tag。但是,Id 或 Tag 都不是唯一标识的键。只有 Id+Tag 可以是唯一标识的键。我需要的是在列标签上省略加入 df1 和 df2。这是我的代码:
CREATE TABLE matched_outcome AS
SELECT df1.Id AS df1_Id, df2.Id AS df2_Id, COUNT(df2.Tag) AS overlapping
FROM df1
LEFT JOIN df2 ON df2.Tag=df1.Tag
GROUP BY df1.Id, df2.Id;