MySQL) 페이징 처리를 위한 query문 COUNTORDERS, OFFSET, LIMIT

✔ MySQL - 데이터 갯수 확인( COUNT())

# 컬럼(id) 갯수 새기
SELECT COUNT(<컬럼명>)FROM <테이블명>;
# 테이블의 행 겟수
SELECT COUNT(*) FROM <테이블명>;

 

 

✔ MySQL - 페이징 처리(orders, 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 <테이블명> ORDERS 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)>
Comment