Drizzle | SQL 커서 기반 페이징
This guide assumes familiarity with:
이 가이드에서는 Drizzle에서 커서 기반
페이징을 구현하는 방법을 설명합니다.
동적 정렬이 필요하다면 아래와 같이 구현할 수 있습니다.
이 페이징 방식의 핵심은 커서를 데이터셋의 특정 행을 가리키는 포인터로 사용하여 이전 페이지의 끝을 표시하는 것입니다. 올바른 정렬과 커서 비교를 위해 커서는 고유하고 순차적이어야 합니다.
고유하지 않고 순차적이지 않은 컬럼으로 정렬해야 한다면, 여러 컬럼을 사용하여 커서를 만들 수 있습니다. 아래는 그 예시입니다.
커서로 사용하는 컬럼에 인덱스를 생성하여 쿼리 효율성을 높이세요.
순차적이지 않은 기본 키(예: UUIDv4
)를 사용한다면, 순차적인 컬럼(예: created_at
컬럼)을 추가하고 여러 커서를 사용해야 합니다. 아래는 그 예시입니다.
Drizzle은 유용한 관계형 쿼리 API를 제공하여 커서 기반
페이징을 쉽게 구현할 수 있습니다.
커서 기반 페이징의 장점: 삽입 또는 삭제 작업으로 인해 건너뛰거나 중복된 행이 발생하지 않고 일관된 쿼리 결과를 얻을 수 있습니다. 또한 limit/offset
페이징보다 효율적입니다. 이전 행을 스캔하고 건너뛰지 않아도 다음 페이지에 접근할 수 있기 때문입니다.
커서 기반 페이징의 단점: 특정 페이지로 직접 이동할 수 없고 구현이 복잡합니다. 정렬 순서에 더 많은 컬럼을 추가하면 커서 비교를 위해 where
절에 더 많은 필터를 추가해야 하기 때문입니다.
따라서 특정 페이지로 직접 이동해야 하거나 더 간단한 페이징 구현이 필요하다면 offset/limit 페이징을 고려해보세요.