데이터 베이스/SQL 첫걸음(인프런 강의)

Ch04. 조회와 정렬 - Limit

webmaster 2025. 10. 17. 22:15
728x90

데이터가 수백만, 수천만 건이 된다고 상상해 보자. 데이터를 SELECT 문으로 번에 모두 조회하는 것은 시스템에 엄청난 부담을 준다. 조회 속도가 느려지는 것은 물론이고, 심하면 서버가 다운될 수도 있다. 네트워크에도 부하가 걸린.

사실 우리는 전체 데이터가 아니라 '상위 N' 보거나, '특정 구간' 데이터만 잘라서 보고 싶은 경우가 훨씬 많다. 이럴때 사용하는 것이 바로 LIMIT 절이다.

 

조회 결과 개수를 제한하는 LIMIT

SELECT 열이름
FROM 테이블이름
WHERE 조건
ORDER BY 정렬기준
LIMIT 개수;
  • LIMIT 는 ORDER BY` 와 함께 사용해야 진정한 의미가 있다. 왜일까? 앞에서 말했듯이 데이터베이스는 결과의 순서를 보장하지 않는다.
    • 정렬되지 않은 상태에서 `LIMIT 2` 을 쓴다면, 실행할 때마다 다른 2개의 데이터가 나올 수도 있다.
    • 가장 비싼 상품 TOP 2처럼 의미 있는 상위 N개를 뽑으려면, 반드시 먼저 ORDER BY 정렬한 LIMIT 잘라내야 한다.

실습) products 테이블에서 가장 비싼 상품 2개만 조회하기

select *
from products
order by price desc
limit 2;

 

특정 범위의 결과만 조회하기: OFFSET

LIMIT 는 숫자 하나만 쓸 수도 있지만, 두 개를 쓸 수도 있다.

LIMIT 건너뛸개수(offset), 가져올개수(row_count);
  • offset : 앞에서부터 몇 개의 데이터를 건너뛸 것인지를 지정한다.
  • row_count : 건너뛴 다음부터 개의 데이터를 가져올 것인지를 지정한다.
LIMIT 다양한 문법
MySQL에서는 LIMIT 0, 2 와 같이 offset 이 0인 경우 LIMIT 2 와 같이 줄여 쓸 수 있다.
MySQL에서는 LIMIT 0, 2 를 LIMIT 2 OFFSET 0 과 같이 OFFSET 키워드를 넣어 사용할 수 있다.
  • 1페이지: 처음부터 2개를 가져와야 한다. 건너뛸 필요가 없으니 offset은 0. LIMIT 0, 2
  • 2페이지: 앞의 2(1페이지 분량) 건너뛰고 2개를 가져와야 한다. offset` 2. LIMIT 2, 2
  • 3페이지: 앞의 4(1, 2페이지 분량) 건너뛰고 2개를 가져와야 한다. offset  4 . LIMIT 4, 2

페이지 규칙 : offset = (페이지번호 - 1) * 페이지당_게시물수

 

실습 1) products 목록을 한 페이지당 2개씩 보여줄 때, 1페이지 조회하기

select *
from products
limit 0, 2;

실습 2) products 목록을 한 페이지당 2개씩 보여줄 때, 2페이지 조회하기

select *
from products
limit 2, 2;

 

실습 3) products 목록을 한 페이지당 2개씩 보여줄 때, 3페이지 조회하기

select *
from products
limit 4, 2;

728x90