約250,000レコードのusersというテーブルがあります。ステージングと呼ばれる別のテーブルがあり、その中には約75,000レコードが含まれています。ステージングには、msisdnという1つの列しかありません。ステージングの行数がユーザーに存在しないことを確認したいと思います。
小さなデータサブセットでテストした次のクエリがありますが、正常に機能しているようです。
SELECT
s.*
FROM staging s
LEFT OUTER JOIN users u ON u.msisdn=s.msisdn
WHERE u.msisdn IS NULL
ただし、問題は、25万人のユーザーの完全なリストでこのクエリを実行しようとしたときです。私がそれを止める前にそれは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はステージングテーブルの主キーですが、テーブルユーザーの主キーではありません。しかし、それが重要かどうかはわかりません。