[MySQL] - 페이징 처리 ORDERS, OFFSET, LIMIT

2022. 1. 12. 18:01 Database/mysql

이번에 정리할 내용은 MySQL 기준으로 페이징 처리를 할 때 사용하는 키워드인 ORDERS, LIMIT, OFFSET 입니다.

구현을 해 본 경험이 거의 없어서 좀 낯설었네요.

따라서 이번에 확실히 정리하도록 하겠습니다 !!

 

 

 

✔ MySQL - 페이징 처리(orders, limit, offset)

쿼리문을 통해 페이징 처리를 해볼건데요, 예제와 쿼리문을 통해 어떻게 작성하는지 알아보겠습니다.

 

LIMIT과 OFFSET의 의미는 다음과 같습니다.

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

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

 

SELECT * FROM 테이블명 ORDERS LIMIT 숫자;

위 쿼리는 숫자 만큼의 행을 출력합니다.

 

 

 

• SELECT * FROM USER orders LIMIT 10;

 

• SELECT * FROM USER orders LIMIT 20;


 

 

 

SELECT * FROM 테이블명 ORDERS LIMIT 숫자(A) OFFSET 숫자(B)

위 쿼리는 (B+1) 행 부터 A 행 만큼 출력을 합니다.

 

 

 

• SELECT * FROM USER ORDERS LIMIT 10 OFFSET 0;

 

• SELECT * FROM USER ORDERS LIMIT 10 OFFSET 10;

 

 

• SELECT * FROM USER ORDERS LIMIT 20 OFFSET 5;


 

 

 

SELECT * FROM 테이블명 ORDER LIMIT 숫자(A), 숫자(B)

위 쿼리는 (A+1)부터 B개의 행을 출력합니다.

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

 

 

 

• SELECT * FROM USER ORDERS LIMIT 0, 10;

 

 

• SELECT * FROM USER ORDERS LIMIT 0, 20;

 

 

 

 

※ OFFSET은 INDEX를 타지 않으니 대용량 데이터를 조회할 땐 다음과 같이 조회를 해야 합니다.

// 기존 페이징 처리 쿼리
SELECT * FROM 테이블명 LIMIT 숫자(A), 숫자(B)

// 인덱스를 태우는 페이징 처리 쿼리
SELECT * FROM 테이블명 WHERE 숫자(A) < key LIMIT 숫자(B)

 

출처 : https://zzang9ha.tistory.com/295