파트너 수수료 계층 구조와 쿼리 인덱스 최적화 개선
목차
feat: 회원 및 파트너 관리 기능 개선, UI/쿼리 최적화
SQL 최적화와 쿼리 구조 개선 작업임. 실행 계획 확인 없이 작성된 쿼리들이 문제가 됐음.
인덱스 활용 패턴
-- 비효율: 함수 적용으로 인덱스 무효화
WHERE DATE(created_at) = '2026-03-01'
-- 효율: 범위 조건으로 인덱스 활용
WHERE created_at >= '2026-03-01'
AND created_at < '2026-03-02'
MyBatis SQL Fragment 활용
<sql id="commonFilter">
<if test="partnerSn != null">AND partner_sn = #{partnerSn}</if>
<if test="status != null">AND status = #{status}</if>
</sql>
반복되는 WHERE 조건을 fragment로 공통화함.
쿼리 성능 체크리스트
| 항목 | 확인 방법 |
|---|---|
| 풀 테이블 스캔 | EXPLAIN으로 type 확인 |
| N+1 쿼리 | 루프 내 DB 조회 제거 |
| 불필요 컬럼 | SELECT * 대신 명시적 컬럼 |
파트너 계층 구조
유통 단계가 깊어질수록 수수료 계산이 복잡해짐. 각 단계의 요율 차이가 해당 단계의 수익임.
최상위 운영사 (0%)
└── 총판 A (0.5%) → 수익 0.5%
└── 판매점 B (0.8%) → 수익 0.3%
└── 최하위 C (1.0%) → 수익 0.2%
파트너 등록 시 상위 파트너의 요율을 초과할 수 없는 검증 로직이 필요함. 초과 설정을 허용하면 마진 역전이 발생함.
끝
댓글 0
첫 댓글 달아줘.