A 테이블 - 데이터 10만건
B 테이블 - 데이터 20만건
C 테이블 - 데이터 22만건
기존 쿼리)
SELECT 필요한컬럼
FROM A
LEFT OUTER JOIN B ON A.A컬럼 = B.A컬럼 AND A.B컬럼 = B.B컬럼
INNER JOIN C ON B.C컬럼 = C.C컬럼 AND B.D컬럼 = C.D컬럼
변경 쿼리)
SELECT 필요한컬럼
FROM A
LEFT OUTER JOIN (SELECT 필요한 컬럼 FROM B WHERE 수를 줄이기 위한 조건)
ON A.A컬럼 = B.A컬럼 AND A.B컬럼 = B.B컬럼
INNER JOIN C ON B.C컬럼 = C.C컬럼 AND B.D컬럼 = C.D컬럼
기존 쿼리 실행계획을 실행 시켜보니, B 테이블이 type ALL로 풀스캔 하고 있어 인터넷에 검색해 보니,
테이블내 필요한 데이터만 가져와서 조인 하는 방법 + 인덱스 생성 후, 인덱스를 태울 수 있는 조건을 걸라고 하셔서
두개의 조언을 참고하여 추가하니 cost가 확실히 줄었는데, 실제 쿼리 속도는 400ms정도 늦어졌습니다..
혹시 왜 그런지 알 수 있을까요??
DB는 MYSQL 사용중입니다~