Pagination의 종류
Server Side/PHP2023. 12. 18. 19:49
Pagination의 종류
PHP에서 자주 쓰이는 Pagination은 3가지가 있습니다.
- Offset Pagination
- Limit(페이지 당 개수) / Offset(어디서부터 시작하여 데이터를 가져올 것인가?)을 이용한 페이징 방식입니다. - Offset Pagination With Deferred Joins
- 지연 조인(Deferred Joins)을 적용한 Offset Pagination은 index를 이용하여 데이터 목록에 대한 접근을 최소화하는 쿼리 최적화의 방법입니다. - Cursor Pagination
- Limit를 이용하지만 Offset이 없어서 단순하게 “이전 페이지와 다음 페이지”만 이동할 수 있는 페이징 방식입니다.
3가지 Pagination을 쿼리로 표현하면 아래와 같습니다. SQL은 저희가 사용하는 MySQL 기준입니다.
-- Offset Pagination
select * from data_table order by id limit 20 offset 1000000;
-- Offset Pagination With Deferred Joins
select * from data_table
inner join (select id from data_table order by id limit 20 offset 1000000) as dt using (id)
order by id;
-- Cursor Pagination
select * from data_table where id > 999999 order by id limit 20;
로컬 환경 기준으로 기존 Offset Pagination 방식으로 약 0.4 ~ 0.5초의 시간이 걸리는 작업이 Offset Pagination With Deferred Joins을 사용한다면 약 0.2초로 줄어들고 Cursor Pagination을 이용하게 되면 약 0.0004초로 큰 폭으로 줄어들었습니다. 하지만 Cursor Pagination은 리스트의 합계를 사용하지 못하는 단점이 있습니다. 그래서 이전 또는 다음 페이지만 이동할 수 있는 곳에서만 사용하거나 무한 스크롤 시에 사용하면 좋을 것.
출처 -
https://developer.comento.kr/post/php-pagination-23-12-11
백엔드 개발자의 Pagination 모험 : 어떻게 골라야 할까?
코멘토에서 더 좋은 서비스를 제공하기 위해서 여러가지를 실험해보고 있습니다. 그 중에서 Pagination에 대한 에피소드입니다.
developer.comento.kr
'Server Side > PHP' 카테고리의 다른 글
PHP 로 개발 한 사이트가 느리다면 (0) | 2023.12.29 |
---|---|
코드이그나이터 액티브 레코드 쿼리문 찍어 보기 (0) | 2023.12.22 |
PHP 해킹 안당하려면 php.ini disable_functions 수정 (0) | 2023.12.16 |
php 세션 class (0) | 2023.12.11 |
숫자를 한글로 (0) | 2023.12.01 |