기존 3개월치(~20만행)를 5.5년치 대량 히스토리로 확대. 성장추세·계절성· 가맹점 생애주기 반영. ID 오프셋 대역(1천만+)으로 기존/라이브 채번과 비충돌, 전부 idempotent 가드. - 98-bulk-seed.sql: 가맹점 40→200(MCC·요율·개점일·CLOSED/HOLD 다양) + 매입 135만건(2021-01~2026-04, 성장추세 연 0.5→1.4배·12월 계절피크·주중주말· 다양 채널/발급사/카드종류/금액구간). 27초. - 99-bulk-derive.sql: 승인 135만·원장 2.6M(RECON+SETTLE)·정산 1.29M· 가맹점집계 358k. 시퀀스 정렬. 31초. - 99b-bulk-econ.sql: 정산경제 파생 — 수수료3층분해 1.29M·프레젠트먼트 1.29M· ISO8583 클리어링 1.29M·순액정산(발급사×일) 16k·펀딩 355k. - 99c-bulk-index.sql: 운영 인덱스 14개(biz_date/merchant/status 등) + ANALYZE. 검증 (실측) - 총 1,130만 행, DB 1.8GB. 연도별 성장 2021년 14.5만→2025년 35.3만건. - 3층 항등식 1,293,145/1,293,145, 펀딩 항등식 355,284/355,284 (100% 성립). - 대시보드/정산경제 화면 정상: 활성가맹점 191, 총매입 3,997억, 입금률 95.7%. - 집계쿼리 0.5초(인덱스). 최근 3개월 라이브 데이터 무손상. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
20 lines
1.5 KiB
SQL
20 lines
1.5 KiB
SQL
-- ===========================================================================
|
|
-- 99c-bulk-index.sql : 대량 데이터 운영 인덱스. 화면/조회 쿼리 응답성 확보.
|
|
-- (실운영 매입시스템의 상시 인덱스에 해당) 전부 IF NOT EXISTS (idempotent).
|
|
-- ===========================================================================
|
|
CREATE INDEX IF NOT EXISTS ix_purchase_bizdate ON purchase(biz_date);
|
|
CREATE INDEX IF NOT EXISTS ix_purchase_merch ON purchase(merchant_id);
|
|
CREATE INDEX IF NOT EXISTS ix_purchase_status ON purchase(status);
|
|
CREATE INDEX IF NOT EXISTS ix_purchase_merch_day ON purchase(merchant_id, biz_date);
|
|
CREATE INDEX IF NOT EXISTS ix_settlement_bizdate ON settlement(biz_date);
|
|
CREATE INDEX IF NOT EXISTS ix_settlement_merch ON settlement(merchant_id);
|
|
CREATE INDEX IF NOT EXISTS ix_ledger_bizdate ON ledger(biz_date);
|
|
CREATE INDEX IF NOT EXISTS ix_ledger_pid ON ledger(purchase_id);
|
|
CREATE INDEX IF NOT EXISTS ix_cmlog_bizdate ON cm_log(biz_date);
|
|
CREATE INDEX IF NOT EXISTS ix_cmlog_level ON cm_log(log_level);
|
|
CREATE INDEX IF NOT EXISTS ix_funding_merch ON st_merchant_funding(merchant_id);
|
|
CREATE INDEX IF NOT EXISTS ix_netset_bizdate ON st_net_settlement(biz_date);
|
|
CREATE INDEX IF NOT EXISTS ix_clearing_bizdate ON mg_clearing(biz_date);
|
|
CREATE INDEX IF NOT EXISTS ix_mercsum_day ON merchant_summary(biz_date);
|
|
ANALYZE purchase; ANALYZE settlement; ANALYZE ledger; ANALYZE st_fee_component;
|
|
ANALYZE st_merchant_funding; ANALYZE mg_clearing;
|