카테고리 없음

Pagination

namu445 2022. 6. 27. 11:00

보여줘야하는 데이터가 많을 때 한번에 보여주는 데이터 수를 정해놓고 페이지 순서대로 보여주는 것

 

MySQL OFFSET을 이용한 Pagination

  • LIMIT 쿼리를 이용해서 한번에 보내줄 row 수 지정하기
  • OFFSET 쿼리를 이용해서 몇번째 row부터 보내줄 수 지정하기
  • order by로 정렬해서 보내주기
Select * from <table_name> order by <정렬 기준 속성> LIMIT value_1, OFFSET value_2
  • 데이터를 조회할 때 테이블 전체를 대상으로 작업을 수행하는 것 도바 WHERE를 사용해서 대상을 한정하는 것이 좋다

주의

  • 페이지를 넘길 때 DB테이블 ROW가 늘거나 줄면 같은 ROW를 결과로 받을 수 있다 => 게시판을 사용하다보면 게시물이 밀리는 경우를 흔히 볼 수 있다
  • 조회, 정렬 기준이 항상 같기 때문에 테이블 전체를 처리해야한다 => 데이터가 늘어날 수록 성능에 영향을 받는다

MySQL 커서 기반 Pagination

  • WHERE를 사용해서 조회, 정렬 시작 포인트를 지정해서 사용할 수 있다 => OFFSET을 이용한 방식보다 데이터 양에 성능영향을 덜 받는다
Select * from <table_name> where <조건 확인 속성> <조건(커서)> order by <정렬 기준 속성> LIMIT value_1

주의

  • 커서의 값으로 조건을 확인할 속성은 중복되지 않는 고유값을 가지고있는 속성이 좋다
  •  중복되는 값을 가질 수 있는 속성으로 조건을 확인할 때는 OR등을 사용해서 중복 값 조회에 문제없게한다

 

 

 

<참고>

 

Learn MySQL: What is pagination

In this article, I will explain pagination and how we can implement it, how we can calculate the OFFSET using page number, and the number of records per page. I will also cover how it can impact the performance and whatis a possible alternative to it.

www.sqlshack.com

 

[DB] 커서 기반, 오프셋 기반 페이지네이션 - SW Developer

한정된 네트워크 자원을 효율적으로 활용하기 위해 특정한 정렬 기준에 따라 데이터를 분할하여 가져오는 것 즉, 데이터베이스에 만개의 데이터가 있을 때, 한번에 만 개를 전달하는 대신 0번

wonyong-jang.github.io