페이지네이션이란 많은 데이터를 부분적으로 불러오는 기술을 의미한다. 데이터가 10억건 있는 경우를 생각해보자. 일반적으로 데이터를 불러올 때 10억건을 한 번에 불러오게 되면 매우 비효율적. 때문에 필요한 일부의 데이터만 불러오는 것이 UX 측면과 성능 측면에서 유리할 것이다. 이것이 페이지네이션의 기본 개념이다.
페이지네이션을 구현하는 방법은 크게 Offset 기반 페이지네이션과 Cursor 기반 페이지네이션 2가지로 나뉜다.
offset
과 limit
을 사용하여 전체 결과 중 일부만 가져오는 방식이다.
offset
은 조회 결과에서 limit
으로 지정한 개수만큼 반환하고 나머지는 버리는 방식으로 동작한다.
SELECT * FROM board LIMIT {조회 결과 개수} OFFSET {조회 시작 기준점}
SELECT * FROM board LIMIT 40 OFFESET 0;
SELECT * FROM board LIMIT 10 OFFESET 100000000;
위 쿼리를 예로 들면 100,000,000번째 데이터로부터 10개를 조회하기 위해선 100,000,010개의 데이터를 모두 읽은 후 필요한 10개의 데이터를 제외한 1억개의 데이터는 버린다. 데이터가 적은 경우 성능 문제가 발생하지 않지만 전체 데이터가 많아질수록 읽고 버려야 하는 데이터의 양이 많아져 이는 성능 저하 문제로 이어질 수 있다.
board
(약 20만 건), prof
, member
, category
, member_block