テーブル df1 を df2 に結合しようとしています。問題は、df2 が 4000 万の観測値を持つ非常に長いテーブルであり、48 時間以上待機した後、MySQL で結合された結果を取得できないことです。そこで、この結合の効率を改善する方法があるかどうかを尋ねたいと思います。両方のテーブルのタグ列にインデックスを追加しました。
df1 と df2 は同じ構造を持ち、以下に例を示します。
|Id |Tag
| -------- | --------------------------------------------
|1 |c#
|1 |winforms
|1 |type-conversion
|1 |decimal
|2 |.net
|2 |decimal
|3 |.net
|3 |math
どちらのテーブルにも、Id と Tag の 2 つの列があります。ただし、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;