1. CSM / RSM 조회
1.1. 배경
배경
•
Nested Loop Join에서 대부분의 Cost 발생
◦
조인이 여러 번 중첩(Nested)되면서 루프 횟수가 많아져 비효율적으로 동작
◦
각 단계별로 반복적으로 인덱스 룩업과 필터링이 수행되면서 성능 저하를 유발
1.2. 개선 내용
•
복합 인덱스 추가
CREATE INDEX idx_cdc_curriculum_deleted_order
ON custom_daily_curriculum (custom_curriculum_id, deleted_at, order_id);
CREATE INDEX idx_rsm_cdcid_deleted_status_order
ON replica_study_module (custom_daily_curriculum_id, deleted_at, status, order_id);
SQL
복사
•
근본적으로 발생하는 Nested Loop Join에서 대부분의 Cost는 개선되지 않음
◦
평균 1200ms 소요
•
인덱스를 추가하더라도 Nested Loop Join은 개선되지 않음. 근본적으로 쿼리 양을 줄일 수 있는 방법 제안
◦
정책적 개선 방향
▪
빈 목록은 공개 설정이 불가능하도록 처리
▪
CSM 상태 업데이트 mutation에서, 빈 목록인지를 판단
▪
빈 목록이 이미 존재하는지 확인 필요
◦
FE 처리 방향
▪
비워져 있는 목록으로 이동되었을 때 오류가 나지 않고, Empty 상태를 보여줄 수 있도록 처리
2. Group User 쿼리
2.1. 배경
배경
•
group_id 인덱스와 user_type 인덱스를 각각 따로 사용한 뒤, Intersect 연산중
2.2. 개선 내용
•
group user 테이블에 group_id, user_type, deleted_at 복합 인덱스 구성
CREATE INDEX idx_group_user_relation_group_id_user_type_deleted_at
ON group_user_relation_tbl (group_id, user_type, deleted_at);
SQL
복사
3. SAI id / type 쿼리
3.1. 배경
배경
•
모든 인덱스가 FK 인덱스만 사용중
3.2. 개선 내용
•
RSA 테이블에 replica_study_unit_id, deleted_at, order_id 복합 인덱스 추가
CREATE INDEX idx_rsa_unit_deleted_order
ON replica_study_activity (replica_study_unit_id, deleted_at, order_id);
SQL
복사
•
RSA 커버링 인덱스로 쿼리 가능
WIP