私は約250,000レコードのユーザーを持つテーブルを持っています。私はそれに約75,000レコードのステージングと呼ばれる別のテーブルがあります。ステージングには1つの列msisdnしかありません。ステージングの行数がでないことを確認するには、ユーザーのを確認します。MySQL JOIN完了までに時間がかかりすぎるクエリ
I私は小さなデータのサブセット上でテストしている次のクエリを、持っている、正常に動作するようです:
SELECT
s.*
FROM staging s
LEFT OUTER JOIN users u ON u.msisdn=s.msisdn
WHERE u.msisdn IS NULL
私は完全なリストでこのクエリを実行しようとすると、問題はしかし、ある
250kユーザーの私はそれを止める前に1時間走った。このクエリを最適化する方法はありますか?
私は、ステージング中のデータのサブセット上でクエリを実行し始めているが、これは恐ろしくマニュアルです:
SELECT
s.*
FROM staging s
LEFT OUTER JOIN users u ON u.msisdn=s.msisdn
WHERE u.msisdn IS NULL
LIMIT 0,10000
MSISDNは、ステージングテーブルの主キーであるが、それはテーブルの主キーではありませんユーザー。私はそれが重要であるかどうかはわかりません。
クエリEXPLAINを実行して結果を投稿してください。両方のmsisdn列のインデックスが作成されていますか?その場合は、両方のテーブルでOPTIMIZE TABLEを実行します。 –