約60.000行と約60列の2つ(またはそれ以上)のテーブルを比較する必要があります。大きなMySQLテーブルを比較する
これらの表には、クエリを実行する2つの値があります。クエリの目的は、TABLE_Aに存在する行をカウントすることですが、行の2つの値に基づいてTABLE_Bには存在しません。
私は、次のクエリを実行しました:
SELECT id
FROM table_a ta
WHERE NOT EXISTS (
SELECT id
FROM table_b tb
WHERE ta.value1=tb.value1 AND ta.value2=tb.value2
)
としては、私は上記のコードとその上にいくつかのバリエーションを試してみた、と述べました。しかし、このクエリを実行するには、完了するまでに時間がかかります。私は10秒以内に実行されるソリューションを見つけることを願っています。
次のクエリは、私が試した、とその私が働いていたと思った:
SELECT value1, value2
FROM (
SELECT ta.value1, ta.value2
FROM table_a ta
UNION ALL
SELECT tb.value1, tb.value2
FROM table_b tb
) result
GROUP BY value1, value2
HAVING COUNT(*) = 1
ORDER BY value1
コードは私に2つのテーブル間のすべての違いを示します。したがって、TABLE_AではvalueXが存在しますが、TABLE_Bでは存在しない場合はvalueXが表示され、その逆もあります。
要するに、行の2つの値に基づいてTABLE_Bに存在しないTABLE_Aからすべての行を取得したいとします。
誰かが助けてくれることを祈っています。
一致する列にインデックスを作成しましたか? – Roy
ご返信ありがとうございます。 MySQLのクエリには比較的新しいので、あなたが何を意味するのかよくわかりません。インデックスを作成するにはどうすればいいですか? –
PHPは言語であり、mysqlのアドオンではありません –