코딩 쏙쏙

[MySQL] 테이블 정렬_페이지네이션(PagiNation) 본문

[MySQL]

[MySQL] 테이블 정렬_페이지네이션(PagiNation)

두두만두 2023. 4. 9. 19:51

페이지네이션(PangiNation)

 

Backend에서 Client에게 값을 전달할 때 많은 데이터를 한 번에 다 보여줄 수 없어 페이지를 (1), (2) ~~~~, (10)처럼 분할하여 전달하는 기능이다.

 

많은 데이터를 꼭 번호로 구분하지 않고도 SNS(인스타, 페이스북)처럼 스크롤을 아래로 내리면 일정 스크롤의 위치에 도달했을 때 다음 데이터를 보여주는 방식으로 사용자가 다음 버튼이나 페이지의 번호를 클릭하지 않아도 데이터를 보여줄 수도 있다.

 

페이지네이션의 방식에는 크게 2가지로 OFFSET방식과 CURSOR방식이 있다.

 

1. 오프셋 기반 페이지네이션(offset pagination)

LIMIT, OFFSET 쿼리를 사용하여 구분한다.
웹 페이지에서 <(1), (2), ~~~, (10)> 방식의 네비게이션을 쓸 때 사용

2. 커서 기반 페이지네이션(cursor pagination)

최근 idx를 기준으로 구분한다.
SNS(페이스북, 인스타, 유튜브 등) 무한 스크롤이나 더 보기를 구현할 때 사용

MySQL - 페이징 처리

 

쿼리문을 통해 페이징 처리를 할 경우 

- LIMIT : 행을 얼마나 가져올지

- OFFSET : 어디서 부터 가져올지

SELECT * FROM 테이블명 ORDERS LIMIT 숫자; 
// 숫자 만큼의 출력을 한다.
SELECT * FROM 테이블명 ORDERS LIMIT 숫자(A) OFFSET 숫자(B) 
// (B+1)행 부터 A행 만큼 출력한다.
SELECT * FROM 테이블명 ORDER LIMIT 숫자(A), 숫자(B) 
// (A+1)부터 B개의 행을 출력한다.

즉, 숫자 (A)가 OFFSET과 동일하다고 보면 된다.

 

페이징 처리하기

웹 사이트를 보면 최소 한번은 페이징을 처리 해야하는 화면이 있다. 그래서 LIMITOFFSET을 이용하여 원하는 위치에서 원하는 데이터를 가져올 수 있다.

SELECT *
  FROM 테이블명
  WHERE status = 'Y'
  ORDER BY CODE 
  LIMIT 숫자(A) OFFSET 숫자(B)

LIMIT는 가져올 데이터 양, OFFSET은 가져올 데이터의 초기 위치 값이다.

즉, 숫자(B)에서 부터 숫자(A)의 데이터를 가져 오라는 의미이다.

Paging을 하기위해 숫자(B)를 변수로 지정하여 페이지를 이동할때마다 해당 페이지의 OFFSET값을 계산하여 지정해주면 된다.

 

 

 

 

 

'[MySQL]' 카테고리의 다른 글

[MySQL]AUTO_INCREMENT초기화  (0) 2023.04.12
[MySQL] JOIN(INNER, OUTER)-정리  (0) 2023.04.08
[MySQL] 사용법-2  (0) 2023.04.02
[MySQL] 사용법-1  (0) 2023.03.27