상세 페이지
SQL REMINDER — 원리는 몰라도, 이것만은 기억하자!
부제: 개발자를 위한 SQL 작성 규칙 — PostgreSQL 실습 중심
누구를 위한 강의인가?
SELECT, WHERE, JOIN, GROUP BY를 작성해 본 초급 후반~중급 개발자가 핵심 대상이다. SQL 튜닝 전문가를 양성하기보다, 성능과 결과 정확성을 해치는 SQL 습관을 미리 줄이는 것이 목표다.
학습 흐름 — 처음은 쉽고, 마지막은 깊게
•
기본·실무 학습 순서: SECTION 01 → 02 → 03 → 05 → 07 → 06 → 08 → 09. SQL 작성 기본 → WHERE → JOIN → GROUP BY와 집계 → 서브쿼리 반복 접근 → 정렬·페이징 → 최신 데이터 조회 순서로 진행한다. SECTION 04는 다른 강의로 통합한 안내 페이지다.
•
SECTION 10 (심화): LATERAL·WITH·MATERIALIZED의 사용과 제거를 비교한다. SECTION 11은 전체 보류, SECTION 12는 강의에서 제외했다.
•
이번 강의에서 집중할 다섯 가지
1.
정확한 조건: 자료형, NULL, 날짜 범위, 필요한 업무 조건을 분명히 한다.
2.
정확한 JOIN: 1:N 관계, 필수 키, LEFT JOIN의 행 보존 의미를 확인한다.
3.
불필요한 반복 제거: 스칼라 서브쿼리·중복 집계·불필요한 JOIN을 줄인다.
4.
필요한 양만 반환: GROUP BY, 정렬, LIMIT, 페이징을 업무 요구에 맞춘다.
5.
마지막에 실행계획 검증: Index Cond/Filter, loops, Buffers로 실제 접근량을 점검한다.
실습 데이터 모델 — BIG 계열 테이블
앞으로의 강의에서는 주문·회원·매장·주문상세·이벤트응모로 이루어진 BIG 계열 실습 테이블을 주요 예제로 사용합니다. 테이블명과 컬럼명, PK/FK 표기는 제공된 StartUPTuning_PG_20250616.pdf 5페이지 「ERD for Tuning : Logical & Physical-startdbpg」를 기준으로 정리했습니다.
BIG 계열 ERD
원본 ERD의 물리 테이블명과 PK/FK 표기를 바탕으로 새로 정리한 관계도입니다. 연결선은 논리적 관계를 표시하며, 실제 DB의 FK 제약조건 존재를 의미하지는 않습니다.
주요 테이블과 역할
테이블 | 역할 | PK | 주요 FK |
ms_mbr_big | 회원 마스터 | mbr_id | — |
ms_shop_big | 매장 마스터 | shop_id | — |
tr_ord_big | 주문 | ord_no | mbr_id, shop_id |
tr_ord_det_big | 주문상세 | ord_no, ord_det_no | ord_no, item_id |
tr_event_entry_big | 이벤트응모 | event_id, entry_no | event_id, shop_id, mbr_id |
주요 테이블 관계
•
회원 1 : N 주문 — ms_mbr_big.mbr_id = tr_ord_big.mbr_id
•
매장 1 : N 주문 — ms_shop_big.shop_id = tr_ord_big.shop_id
•
주문 1 : N 주문상세 — tr_ord_big.ord_no = tr_ord_det_big.ord_no
•
회원·매장 1 : N 이벤트응모 — tr_event_entry_big.mbr_id, shop_id가 각각 회원·매장 키를 참조
•
추가 참조 대상 — tr_ord_det_big.item_id는 일반 ms_item을, tr_event_entry_big.event_id는 일반 ms_event를 참조하는 것으로 물리 모델에 표시됨 (BIG 계열 5개 테이블의 관계도에는 미포함)
테이블별 컬럼 확인
tr_ord_big — 주문
ms_mbr_big — 회원
ms_shop_big — 매장
tr_ord_det_big — 주문상세
tr_event_entry_big — 이벤트응모
원본 자료 확인 사항
•
PDF 5페이지 ERD에는 테이블·컬럼명과 논리적인 PK/FK 표기가 있지만, 정확한 PostgreSQL 자료형, NULL 허용 여부, FK 제약조건 정의는 제시되지 않습니다. 따라서 이 페이지에서 임의로 확정하지 않았습니다.
•
함께 제공된 StartUPTuning_PG_SQL_Script.sql에는 tr_ord_big.ord_ymd를 참조하는 SQL이 있으나, 해당 컬럼은 PDF 5페이지 ERD에 표시되지 않습니다. DB의 실제 정의와 비교해 최종 반영해야 합니다.
•
실습 스크립트의 tr_ord_big_p는 별도로 생성하는 파티션 실습용 테이블이므로 tr_ord_big의 원본 DDL과 혼동하지 않습니다.
이 모델로 학습하는 대표 주제: WHERE 조건과 인덱스 검색, 회원–주문 JOIN, 주문–주문상세의 1:N 관계, 반복 서브쿼리, LATERAL, 그룹별 최신 주문 조회, 집계 및 페이징.
새롭게 구성한 전체 목차
권장 진행 순서: SECTION 01 → 02 → 03 → 05 → 07 → 06 → 08 → 09 → 10. 번호 순으로 표시된 아래 페이지 링크와 실제 학습 차례는 다를 수 있다. GROUP BY(07)를 익힌 다음 서브쿼리(06)를 학습한다. 전체 Before/After 목차는 상위 SQL REMINDER 페이지에 있다.
강의 자료의 근거와 활용 범위
기존 SQL GUIDE for Oracle/MySQL, StartUPTuning_PG_20250616.pdf와 실습 SQL, 실제 프로젝트 튜닝 사례에서 교육 규칙과 사례 유형을 확인했다. PostgreSQL BIG 계열 테이블로 재구성한 예제는 실제 운영 DB에서 실행한 SQL이나 실측 결과라고 주장하지 않는다. EXPLAIN ANALYZE는 테스트 환경에서 SQL을 실제 실행할 때만 사용한다.
개편 전 원문 보관:
백업_20261014에 SECTION 01~12의 모든 SQL 예제·예상 실행계획·설명을 보존했다. 삭제·축약한 주제는 언제든 해당 백업에서 복구할 수 있다.
백업_20261014에 SECTION 01~12의 모든 SQL 예제·예상 실행계획·설명을 보존했다. 삭제·축약한 주제는 언제든 해당 백업에서 복구할 수 있다.강의 최종 목표: SQL을 잘 고치는 개발자가 되기 전에, 처음부터 성능 문제를 줄이는 SQL을 작성하는 개발자가 되자.


