Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

Postgresql 의 limit, offset 으로 페이징 처리할 때 주의할 점

제목

Postgresql 의 limit, offset 으로 페이징 처리할 때 주의할 점

1. 상황 및 문제점

다음과 같은 상황에서 발생한다.

  • order by 절에서 사용되는 column 에 중복되는 값이 있다.

다음과 같은 문제가 발생한다.

  • 중복되는 값이 여러 페이지에 걸쳐 있는 경우, 같은 값이 여러 페이지에서 나타난다.

2. 해결방안

중복되는 값이 나타나지 않도록 order by 절에 column 을 추가한다.

3. sql

3.1 변경 전 sql

1개의 페이지에 10개의 게시물이 출력된다고 가정하면, 첫 번째 페이지의 sql 은 다음과 같다.

select
graha_mail_id,
subject,
sent_date
from webmua.graha_mail
order by sent_date desc
limit 10 offset 0

2 번째 페이지는 offset 부분만 변경된다.

limit 10 offset 10

3.3 변경 후 sql

order by 절에 Primary 컬럼인 graha_mail_id 를 추가한다.

select
graha_mail_id,
subject,
sent_date
from webmua.graha_mail
order by sent_date desc, graha_mail_id desc
limit 10 offset 0
제목

첨부파일