Cbpro広告:
このSQLクエリは、マスタで40Kレコードと第二の表の5000行があるとして実行する以上13 SECONDS秒かかります。
いずれかを作成するインデックスを伝えることはできますか?私は、組み合わせインデックスとして有効期限の日付と電子メールを作成しているが、動作しません。
SELECT email,first_name,last_name,userid,PASSWORD,cons FROM MASTER
WHERE expirydate <='2020-02-27'
AND email NOT IN (SELECT (email) FROM bounce_emails_amazon)
EXPLAIN
1 PRIMARY MASTER \N ALL expdate_email,expemail.userid \N \N \N 38228 60.75 Using where
2 SUBQUERY bounce_emails_amazon \N index email email 103 \N 3567 100.00 Using index
ビルKarwin:
私がお勧めします:
ALTER TABLE `master` ADD INDEX (expirydate);
ALTER TABLE `bounce_emails_amazon` ADD INDEX (email);
その後@Alexが示唆されていること、クエリの参加除外を使用する(私はここでそれを含めます):
SELECT
m.email,
m.first_name,
m.last_name,
m.userid,
m.PASSWORD,
m.cons
FROM MASTER m
LEFT JOIN bounce_emails_amazon b
ON b.email = m.email
WHERE m.expirydate <='2020-02-27'
AND b.email IS NULL
これが優れている理由は、サブクエリを使用して示した元のクエリ全体をスキャンしてもよいということであるbounce_emails_amazon
外部クエリのすべての行のために。結合を使用して、とに索引を追加することによって、email
カラム、それだけで一致する行を検索します。