피드로 돌아가기
Adding Search UI to a Flutter Notes List — SearchBar + Supabase Full-Text Search
Dev.toDev.to
Database

데이터 규모별 Two-Tier 검색 전략으로 100개 이상 데이터 대응 및 300ms 지연 최적화

Adding Search UI to a Flutter Notes List — SearchBar + Supabase Full-Text Search

kanta13jp12026년 4월 19일4intermediate

Context

노트 아이템 50개 초과 시 발생하는 스크롤 탐색 비용 증가로 인한 사용자 경험 저하 문제 발생. 단순 리스트 렌더링 구조에서 데이터 규모 확장에 따른 검색 성능 저하 및 네트워크 오버헤드 해결 필요.

Technical Solution

  • 100개 이하 데이터의 Zero Latency 구현을 위한 Client-side filter 적용
  • 100개 초과 데이터 처리를 위한 Supabase Full-Text Search 기반 Server-side 쿼리 전환
  • DB 부하 감소 및 불필요한 API 호출 방지를 위한 300ms Debounce 로직 도입
  • PostgreSQL GIN Index 및 tsvector 컬럼 설계를 통한 검색 쿼리 최적화
  • 데이터 정합성 유지를 위해 INSERT/UPDATE 시점에 작동하는 자동 업데이트 Trigger 구성
  • RegExp 기반의 TextSpan 분리 로직을 통한 검색 결과 하이라이팅 UI 구현

- 데이터 셋 규모에 따른 검색 전략 임계값(예: 100건) 설정 검토 - 검색 UI 구현 시 API 비용 절감을 위한 Debounce 타임아웃 설정 적용 - PostgreSQL 사용 시 단순 LIKE 검색 대신 GIN Index와 tsvector를 활용한 Full-Text Search 고려

원문 읽기