이번 소식
TanStack DB 0.15.0이 2026년 10월 15일 12:45 KST에 공개됐습니다. 앱의 데이터 조회 결과를 변화에 맞춰 갱신하는 개발 도구로, 이번에는 페이지에 표시할 데이터와 연결된 하위 데이터의 조회 범위를 줄였습니다. 한 건을 찾는 findOne의 결과 개수 제한도 바뀌므로 기존 코드의 호환성을 확인해야 합니다.
달라진 점
조회 결과를 정렬하거나 한 건만 찾을 때, 해당 조회의 select 안에서 불러오는 연결 데이터는 실제 표시 범위의 행에 대해서만 계산합니다. limit은 표시할 개수, offset은 시작 위치입니다. 이 값이나 setWindow로 페이지 범위를 움직여도 화면 밖의 행에 딸린 데이터를 미리 모두 계산하지 않는 방식입니다.
릴리스 설명은 뒤쪽 페이지의 처리 비용도 첫 페이지와 비슷해진다고 안내합니다. 다만 모든 조회나 앱 전체가 같은 비율로 빨라진다는 뜻은 아닙니다. 하위 조회의 from에서 물려받은 연결 데이터와 fn.select에 전달한 연결 데이터는 여전히 표시 범위를 자르기 전에 모든 행을 불러옵니다.
어떤 점이 달라지나요?
연결 데이터가 있는 목록을 페이지별로 보여주는 앱에서 살펴볼 변화입니다. 표시하지 않는 행의 하위 조회를 줄이는 것이 핵심이며, 중복을 제거하는 distinct 조회도 모든 원본 행의 하위 데이터를 불러오지 않게 됩니다. 실제 효과는 조회 구조에 따라 달라지므로 위 예외에 해당하는지 확인해야 합니다.
필요한 데이터만 가져오는 소스에서 정렬·개수 제한과 LEFT JOIN 필터를 함께 쓰는 일부 조회의 누락도 수정됐습니다. 앞부분 데이터만으로 표시 범위를 채우지 못하면 전체 소스를 읽어 필요한 결과를 확보합니다.
사용 전 확인할 점
findOne은 이제 처음 정해진 결과 개수 1을 유지합니다. .limit(0).findOne()이면 0을 유지합니다. 이전처럼 setWindow({ limit: 3 })으로 결과를 세 건으로 늘리면 새 오류 SetWindowFindOneLimitError가 발생합니다.
정렬된 findOne은 시작 위치를 옮길 수 있지만, 정렬하지 않은 경우 시작 위치는 0이어야 합니다. setWindow는 이제 해당 조회 자체의 범위만 움직이며, 내부 하위 조회의 범위까지 대신 움직이지 않습니다. 업데이트 전 결과 개수를 바꾸거나 하위 조회의 범위 이동에 의존하던 코드를 확인하세요.
새 글 받아보기
RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.