Coding 01

페이징 쿼리 본문

기술면접

페이징 쿼리

하루우울루 2025. 4. 23. 15:16

페이징 쿼리(Paging Query)는 관계형 데이터베이스(RDB)에서 전체 데이터를 부분적으로 나누어 데이터를 조회하거나 처리할 때 사용된다.

 

대용량 데이터를 효율적으로 처리할 수 있는데 페이징 쿼리를 사용하면, 

필요한 데이터만 가져와 불필요한 리소스 사용을 방지할 수 있다.

이것으로 데이터 로딩 시간도 단축되어서 UX도 좋아질 수 있다.

 

웹이나 모바일 앱에서 스크롤 방식으로 표현할 수 있고, 더 보기, 다음 페이지 같은 기능들을 만들 수 있다.


MySql에서 페이징 쿼리는 일반적으로 LIMIT, OFFSET 구문이 있다.

 

LIMIT절은 쿼리 결과에서 반환할 최대 행수를 정한다.

10개의 행을 가져온다

OFFSET절은 결과 집합에서 건너뛸 행 수를 정한다.

LIMIT과 함께 사용해서 페이징을 구현한다.

처음 10개의 행을 건너뛰고 그 다음 10개의 행을 가져온다.

MySql에서 축약문법도 있다.

OFFSET 10, LIMIT 10

OFFSET이 커질수록 성능이 저하되니 큰 테이블에서 높은 OFFSET값은 피하는 게 좋다.

왜냐하면 DBMS는 지정된 OFFSET수만큼 모든 레코드를 읽은 이후에 데이터를 가져오기 때문이다.


그래서 OFFSET을 사용하지 않는 페이징 쿼리를 사용하는 게 대부분이다.

OFFSET을 사용하지 않는 페이징은 이전 페이지의 마지막 데이터 값을 기반으로 다음 페이지를 조회한다.

 

대표적으로 키셋 페이징(Keyset pagination), 시킵 스캔(Seek Method)가 있다.

키셋 페이징

키셋 페이징은 단일 컬럼 기준으로 비교를 해서 값을 가져오고,

시킵 스캔

시킵 스캔은 여러 컬럼을 튜플로 한 번에 비교한다.

 

OFFSET을 사용하지 않아 대량 데이터가 있는 테이블에서도 일정한 성능을 유지할 수 있다.

'기술면접' 카테고리의 다른 글

PRG 패턴  (0) 2025.04.25
멀티 쓰레딩  (1) 2025.04.24
낙관적 락 & 비관적 락  (0) 2025.04.22
String의 타입 캐스팅과 String.valueOf()의 차이점  (1) 2025.04.14
트라이 자료구조  (0) 2025.04.10