2016-10-05 2 views
0

Оба a и c - это та же таблица с 400 записями. b и d - одна и та же таблица с 300 записями. Тем не менее занимает около 4 минут, чтобы запустить это. Как я могу ускорить это?SQL занимает слишком много времени для запуска

select a.docref 
from a 
left outer b 
on a.cono=b.cono and a.tt=b.tt and a.docref=b.docref 
where a.cono='VC' 
and b.accn08='9005100' 
and a.pstper=11609 
and a.cbpref not in (select c.cbpref 
         from c 
         left outer join d 
         on c.cono=d.cono and c.tt=d.tt and c.docref=d.docref 
         where c.cono='VC' 
         and d.accn08='9005100' 
         and c.pstper=11609 
         and c.tt='RX') 

ответ

0

Синтаксис NOT IN занимает немного больше времени. Попробуйте LEFT JOIN и добавьте условия, в которых ID IS NULL:

SEELCT a.docref 
FROM a 
LEFT OUTER JOIN b 
ON a.cono=b.cono 
AND a.tt=b.tt 
AND a.docref=b.docref 
LEFT OUTER JOIN 
(
    SELECT c.cbpref 
    FROM c 
    LEFT OUTER JOIN d 
    ON c.cono=d.cono AND c.tt=d.tt AND c.docref=d.docref 
    WHERE c.cono='VC' 
    AND d.accn08='9005100' 
    AND c.pstper=11609 
    AND c.tt='RX' 
)tb 
ON tb.cbpref = a.cbpref 
AND a.cbpref IS NULL 
WHERE a.cono='VC' 
AND b.accn08='9005100' 
AND a.pstper=11609 
Смежные вопросы