Skip to main content

개선된 Limit 사용 방식

1. 기존 방식 : Limit와 IsntPagination

기존의 백엔드 설계 방식에서는 모든 데이터를 가져오기 위해 다음과 같이 설계되었습니다

  • QueryVars.IsntPagination = true를 설정하여 페이지네이션을 비활성화
  • vRet.PageVars.Limit 값을 매우 큰 숫자(예: 1000000000)로 설정

하지만 이러한 접근 방식은 다음과 같은 문제가 있었습니다

  • 코드 가독성 저하
  • 불필요한 메모리 낭비: 너무 큰 Limit 값은 메모리와 리소스의 낭비를 발생 시킬 수 있습니다.

2. 개선된 방식

개선된 방식에서는 IsntPagination 필드를 제거하고, Limit = 0으로 설정하면 모든 데이터를 한 번에 가져오도록 설계되었습니다.

개선된 예시 코드 :

p.Limit = 0

bucketCnt := 1 + (int(qryCnt) / p.Limit)   // bucketCnt = 1 

for i := 0; i < bucketCnt; i++ {          

p.Offset = p.Limit * i            // Offset 0 

sqlStr, _, _ := models_join.ListType1PlainQryStrGet()

}

주요 특징 :

  • 코드 단순화: 불필요한 IsntPagination 필드를 제거하여 설정을 간소화.
  • 자원 최적화: Limit = 0으로 동작을 제어하므로 메모리 사용이 최적화됨.
  • 유지보수 용이: 더 직관적인 코드 구조로 인해 개발자가 쉽게 이해하고 수정 가능.