0
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
이 게시물은 biz-crm에서 대용량 테이블 검색이 타임아웃/지연되는 문제를 IndexedDAO 패턴으로 해결한 과정을 정리한 것입니다. 먼저 사용자의 실제 검색 사용 방식(Expression 다중 필터의 사용 빈도)을 인터뷰해 ChannelID 기반 조회가 핵심임을 확인했습니다. 원인은 LOWER(col)=... 형태로 인해 컬럼 인덱스가 무력화되었고, 범용 equalIgnoreCase/containsIgnoreCase 변환이 인덱스 히트를 불투명하게 만들었기 때문으로 분석했습니다. 인덱스 추가/코드 레벨 LOWER 제거의 트레이드오프를 비교한 뒤, 큰 테이블에는 만능 필터를 포기하고 인덱스 기반 IndexedDAO를 적용하기로 결정했습니다. IndexedDAO는 Generic Expression을 SearchRequest 단위로 추상화하고 자주 쓰는 조회 조건에서 인덱스 히트를 보장하는 쿼리를 생성하도록 책임을 분리한 방식입니다. 그 결과 change_logs의 8초대 쿼리가 200ms대로 개선되었고 유사 문제를 다른 테이블에도 순차 적용 가능한 구조가 마련되었습니다. 성능 최적화의 출발점을 개발자의 발견이 아니라 Customer-driven 관점의 사용자 경험 파악으로 삼았다고 마무리합니다.


