최적화 할 SQL 쿼리가 있습니다."not in"쿼리를 최적화하는 데 도움이 필요합니다.
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"와 같은 테이블에 대응하는 행이없는 "FOO는"모든 행을 얻을 필요가있다. 테이블에는 abt 17000 개의 행이 있으며 ALERT_ORIGIN "BAR"이있는 abt 1000 레코드 만 있습니다. 그래서 내 쿼리는 나를 abt 16000 행을 제공하기로되어 있습니다.
편집 : 현재 쿼리가 매우 느립니다. 현재 색인이 없습니다.
색인, 키 등이 있습니까? 지금 천천히? PHONE을 사용할 수 있습니까? – gbn
은'... 전화 NOT IN (DISTINCT 전화를 SELECT'PHONE' – Bohemian
'컬럼에 인덱스를 넣어 ALERT_ORIGIN'와 고려 그리고 당신은에서'DISTINCT'을 제거 할 수 있습니다 ...', 필요하지 않을 것. –