我有一个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是“富”不具有相应的行中与ALERT_ORIGIN“BAR”同桌。该表包含abt 17000行,并且只有abt 1000条记录具有ALERT_ORIGIN“BAR”。所以我的查询应该给我abt 16000行。
编辑:目前的查询是非常缓慢的。我目前没有任何索引。
你有索引,键等吗?现在慢吗? PHONE是可空的吗? – gbn
考虑将索引的列上'ALERT_ORIGIN'和'PHONE' – Bohemian
你可以删除'DISTINCT'的'... PHONE NOT IN(SELECT DISTINCT电话......',这是没有必要的。 –