最適化しようとしている SQL クエリがあります。
SELECT *
FROM QUEUE_SMS_ALERT Q1
where ALERT_ORIGIN = "FOO"
AND RECORD_ID is null
and PHONE NOT IN (
SELECT DISTINCT PHONE
FROM QUEUE_SMS_ALERT Q2
where Q2.ALERT_ORIGIN = "BAR"
);
基本的に、ALERT_ORIGIN が「FOO」で、同じテーブルに ALERT_ORIGIN「BAR」の対応する行がないすべての行を取得する必要があります。テーブルには約 17000 行が含まれており、ALERT_ORIGIN "BAR" を持つレコードは約 1000 しかありません。だから私のクエリは私に約16000行を与えるはずです。
編集: 現在のクエリは非常に遅いです。現在、インデックスはありません。