에서 선택 * 실행 대 NOT 기본적으로 보이는 쿼리를 존재하는 나는이 다음SELECT COUNT (*) 테라 데이타
select count(*)
from TableA a
where not exists (Select 1 from TableB b where a.ID = b.ID);
TableA의는
하면 TableB의
같은 약 8,562,212 기록을 가지고 I 위 쿼리를 실행하면 무기한 실행됩니다. 내가 함께select count(*)
를 교체 할 때 단지
select *
쿼리는 2 초에서 실행 (예상대로) 0 행을 반환합니다. 또한 내가 존재하지 않는 곳에 역행 (TableB가 없으면 .... TableA), count (*)를 사용하여 2 초 후에 실행하고 0 행을 반환합니다.
유일한 문제는 위의 쿼리입니다. 나는 많은 DB 테이블에서 비슷한 쿼리를 실행하고 결코이 문제를 다루지 않는다고 덧붙일 것이다. 이것이 일어날 수있는 이유는 무엇입니까? 나는 곤두박질 친다. 감사합니다
두 테이블 모두 id 열을 기준으로 기본 인덱스가 필요합니다. –
설명을 게시 할 수 있습니까? – dnoeth