본문 바로가기

Backend/DB 실무

쿼리 단순화 작업

반응형
SELECT dc.*, c.t3_ID_FK FROM test.t1 dc 
JOIN test.t2 c ON dc.t2_ID_FK = c.t2_ID
WHERE t3_ID_FK IN (select mm.t3_ID from test.t3 mm where mm.t3_PARENT_ID IN (select m2.t3_ID from test.t3 m1 LEFT OUTER JOIN test.t3 m2 ON m1.t3_ID = m2.t3_PARENT_ID
where m1.t3_ID = 116))

SELECT dc.*, c.t3_ID_FK 
FROM test.t1 dc 
JOIN test.t2 c ON dc.t2_ID_FK = c.t2_ID
JOIN test.t3 mm ON dc.t3_ID_FK = mm.t3_ID
JOIN test.t3 m2 ON mm.t3_PARENT_ID = m2.t3_ID
WHERE m2.t3_PARENT_ID = 116;

원래의 복잡한 쿼리를 간단화하는 과정은 다음과 같다:

1. 기본 테이블과 조인을 식별: 먼저 원래 쿼리에서 사용되는 기본 테이블과 조인하는 테이블 식별

원래 쿼리에서는 `test.t1`, `test.t2`, 그리고 `test.t3` 테이블 사용

2. 조인 조건 정의: 다음으로, 이러한 테이블 간의 관계를 파악하고, 조인 조건 정의

원래 쿼리에서는 `t1`과 `t2` 테이블 간의 조인은 `t2_ID_FK` 필드 사용, `t1`과 `t3` 테이블 간의 조인은 `t3_ID_FK` 필드 사용

3. 서브쿼리 해제: 

원래 쿼리에서는 서브쿼리를 사용하여 `t3_ID`, 선택 이 부분을 해결하기 위해 `t3_PARENT_ID`와 조인하여 필요한 데이터를 직접 선택하도록 변경

4. 단순화된 쿼리 작성: 조인을 사용하여 필요한 데이터를 선택하는 단순화된 쿼리 작성

이 경우, `t1`과 `t2` 테이블은 기존과 같이 조인하며, `t3` 테이블과도 조인합니다. 그런 다음 `t3`와 `m2` 테이블을 조인하여 `t3_PARENT_ID`가 116인 경우의 데이터 선택

반응형

'Backend > DB 실무' 카테고리의 다른 글

[Mybatis] Mybatis VS JPA  (0) 2024.02.20
Insert문  (0) 2024.02.19
02/16  (0) 2024.02.16
[Mybaytis] Mybatis에러  (0) 2024.01.11
01/09 회고  (0) 2024.01.09