[MySQL] - 페이징 처리 ORDERS, OFFSET, LIMIT
이번에 정리할 내용은 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)
'Database > mysql' 카테고리의 다른 글
MySQL 사용자 조회, 생성, 제거, 권한부여 (0) | 2024.09.20 |
---|---|
[Database]Isolation level 파헤치기 - 서로 다른 isolation level을 가진 transaction들은 어떻게 동작할까? (0) | 2021.04.11 |
[MySQL] Delimiter 란? (0) | 2021.04.11 |
[Database]Transaction과 isolation level (0) | 2021.04.11 |
MySQL, 데이터형과 범위 (0) | 2020.11.05 |
MySQL 숫자형 int의 종류과 최대 허용범위 (0) | 2020.11.05 |
[MySQL] MySQL 마이그레이션 (0) | 2020.07.30 |
[MySQL] MySQL 로그 남기기 (0) | 2020.07.30 |