두 개의 테이블이 있습니다. 나는 표 2에있는 표 1의 모든 행을 찾고 되돌아 가고 싶습니다. 나는 대답했다. 그러나 나는 그것을 더 빨리 원한다. 예 :최적화 - SQL : 여러 테이블에 모든 데이터를 표시하는 방법
Create table One (ID INT, Value INT, location VARCHAR(10))
Create table Two (ID INT, Value INT, location VARCHAR(10))
INSERT INTO One VALUES(1,2,'Hanoi')
INSERT INTO One VALUES(2,1,'Hanoi')
INSERT INTO One VALUES(1,4,'Hanoi')
INSERT INTO One VALUES(3,5,'Hanoi')
INSERT INTO Two VALUES(1,5,'Saigon')
INSERT INTO Two VALUES(4,6,'Saigon')
INSERT INTO Two VALUES(5,7,'Saigon')
INSERT INTO Two VALUES(2,8,'Saigon')
INSERT INTO Two VALUES(2,8,'Saigon')
과 답변 :이 쿼리와
SELECT * FROM One WHERE ID IN (SELECT ID FROM Two)
UNION ALL
SELECT *FROM Two WHERE ID IN (SELECT ID FROM One)
, 시스템은, I 시스템이 한 번 (두 번 테이블 하나를 테이블을 스캔하고자하는 테이블 4 번 enter image description here
를 스캔 테이블 두 번).
나는 미친가요?
음 .. 그것은 다릅니다. 우선 IN 대신 EXISTS를 사용합니다. 둘째, 적절한 색인을 구현할 것입니다. – DNac
두 테이블간에 ID에 대한 내부 조인을 수행 할 수 없습니까? – DB101
죄송합니다. 내 영어가 너무 안좋아. 나는 질문을 고정시켰다. 우리는 –