나는 쿼리가 있습니다.mysql 쿼리를 향상
는 그 왼쪽으로 쉽게 할 수있는 그런DELETE FROM A
WHERE i NOT IN
(SELECT i FROM B
);
이
가입 :DELETE FROM A
WHERE i NOT IN
(SELECT i FROM B WHERE j = 1
UNION select i from C
UNION select i from D
);
기본적으로 그냥 있었다면 필드 i
테이블 B, C 또는 D에서 발생하지 않는 모든 행을 삭제
DELETE A FROM A
LEFT JOIN B
ON A.i = B.i
WHERE B.id is NULL;
I 번지 (모든 테이블이 스키마에서 id 필드를 가지고 있다고 가정) 내 질문에 다음 위의 확장합니까 다음 솔루션과 세 테이블 시나리오? 이 같은
DELETE A FROM A
LEFT JOIN B
ON A.i = B.i AND B.j = 1
LEFT JOIN C
ON A.i = C.i
LEFT JOIN D
ON A.i = D.i
WHERE B.id is NULL
AND C.id is NULL
AND D.id is NULL
는 각 요청이 무엇을 결정하기 위해 Explain을 사용하여 시도? –
작동한다면 시도해 보셨습니까? 그렇게 나쁘게 들리는 것은 아닙니다. – Bobby
실행되고 실행되며 수행해야하는 것처럼 보입니다. 이제 조금 더 시간을 보내고 나면 더 편안해집니다. 또한 내부 선택/조합 코드보다 훨씬 빠르게 실행됩니다. – bradgonesurfing