SQL 13

PostgreSQL(ANSI SQL): LEFT JOIN ... IS NULL과 NOT EXISTS의 차이

※ PostgreSQL: ANSI SQL: Differences Between LEFT JOIN ... IS NULL and NOT EXISTS. 안녕하세요. 듀스트림입니다. 오늘은 LEFT JOIN ... IS NULL과 NOT EXISTS는 어떤 차이가 있고 어떻게 동작하는지 더 깊게 알아보겠습니다. 차이점을 표로 먼저 보여드리겠습니다.항목LEFT JOIN ... IS NULLNOT EXISTS동작 방식조인 결과에서 NULL 값을 확인서브쿼리를 통해 조건 불만족 여부 확인성능큰 데이터셋에서 조인으로 데이터 크기 증가 가능조건이 적은 경우 효율적일 가능성 있음가독성비교적 간단하나 큰 데이터셋에서는 복잡해질 수 있음직관적으로 이해 가능사용 예시외부 조인 결과에서 매칭되지 않는 데이터 확인특정 조건에 맞는..

SQL 2024.12.23

PostgreSQL 쿼리 튜닝: LEFT JOIN ... IS NULL → NOT EXISTS로 변환, 인덱스 활용

※ Transforming LEFT JOIN with NULL Filtering to NOT EXISTS for Better Index Utilization. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 오랜만에 쿼리 튜닝 사례입니다. 이번 사례는 LEFT JOIN ... NULL 필터링을 NOT EXISTS로 변환하고, 인덱스를 추가하여 성능 최적화한 사례입니다.최적화 결과, 실제 운영 쿼리 성능이 약 2배 정도 향상되었습니다. 주요 포인트는 다음과 같습니다.1. LEFT JOIN ... IS NULL → NOT EXISTS로 조인 방식을 변경하여 조인 비용 감소와 락 경합 발생 최소화2. 필터 조건에 맞는 인덱스 추가로 데이터 접근 방식 최적화: Seq Scan(전체 스캔) → Bitmap Index ..

SQL 2024.12.20

PostgreSQL 쿼리 튜닝: INSERT INTO → CTAS로 5배 성능 향상

※ Converting INSERT INTO to CTAS for PostgreSQL Query Optimization 안녕하세요. 듀스트림입니다. 오늘은 쿼리 튜닝 사례를 하나 가져왔습니다.기존 INSERT INTO 문으로 만들어져 있는 쿼리를 CTAS(Create Table As Select) + INSERT INTO로 병렬 처리 가능하게 최적화하여 성능 개선한 사례입니다. 주요 포인트는 다음과 같습니다.1. PostgreSQL은 병렬 INSERT를 지원하지 않습니다.2. CTAS는 병렬 처리를 지원합니다. (SELECT ... INTO도 병렬 지원)3. max_parallel_workers, max_parallel_workers_per_gather 파라미터가 적절하게 설정되어 있어야 합니다.4. 상..

SQL 2024.12.13