728x90
회사 프로젝트 PHP 코드를 JPA로 마이그레이션 하는 작업 중 페이징 처리가 필요하게 되어, 이를 공부하기 위해 작성한 글입니다.
LIMIT
결과 중에 처음부터 설정 개수만큼 가져온다
(몇 번째부터 몇 개 가져올지 정할 수도 있다)
SELECT * FROM 테이블명 LIMIT 10; -- 처음부터 10개 출력 (1~10)
SELECT * FROM 테이블명 LIMIT 30,20; -- 30번째 후부터 20개 출력 (31-50)
OFFSET
어디서부터 가져올지를 정한다
(LIMIT 가져올 개수 OFFSET 시작행)
※ LIMIT을 사용하지 않고 OFFSET만을 단독으로 사용할 수 없다
SELECT * FROM 테이블명 LIMIT 10 OFFSET 5; -- 6번째 행부터 15번 째행까지 출력 (6 ~ 15)
-- 아래 쿼리와 같다
SELECT * FROM 테이블명 LIMIT 5,10
페이징 처리
모든 리스트를 조회할 때 가져올 데이터 양이 상당히 많을 수 있다. 이를 방지하기 위해 페이징 처리를 필수적으로 구현하는 데 이때 LIMIT과 OFFSET을 이용하여 페이징 처리를 구현할 수 있다.
SELECT *
FROM 테이블명
ORDER BY NAME ASC
LIMIT 20 OFFSET 5
LIMIT 은 가져올 데이터 양
OFFSET 은 가져올 데이터의 초기 위치값이다.
예제의 SQL문을 실행하면 6번 째행에서부터 20건의 데이터를 가지고 오라는 의미이다.
커스텀 Paging 처리를 하기 위해 LIMIT과 OFFSET 부분을 변수로 지정하여, 필요로 하는 해당 페이지의 OFFSET 값을 지정해 주면 된다.