쿼리로 반환되는 행 개수를 어떻게 제한하지? 만약 너가 딱 처음 5명의 학생만 필요하거나, 월급 제일 높은 직원 한 명, 또는 top-10 상품 리스트만 보고 싶으면 LIMIT이 바로 그거야!
DB 다루다 보면 쿼리 결과가 엄청 많을 때가 많아. 이럴 땐 반환되는 데이터 양을 제한해야 하는데, 그 이유는:
- 서버랑 네트워크에 부담을 줄이려고.
- 끝도 없는 페이지 스크롤 안 하고 데이터 분석을 쉽게 하려고.
간단한 비유로 설명할게: 너가 바에서 여자한테 술 한 잔 사주려고 했는데, 실수로 모든 손님 술값을 계산해버렸다고 생각해봐. 멋지긴 한데, 굳이 그렇게까지 할 필요 없잖아? 그래서 우리는 딱 필요한 것만 주문하는 법을 배우는 거고, LIMIT이 그걸 도와줘.
기본 LIMIT 문법
이렇게 쓰면 돼:
SELECT 컬럼1, 컬럼2
FROM 테이블
LIMIT 행_개수;
예시 1: 행 제한하기
예를 들어, students 테이블에 1000개 행이 있다고 해보자. 우리는 처음 3개만 보고 싶어:
SELECT *
FROM students
LIMIT 3;
결과:
| id | name | age |
|---|---|---|
| 1 | Otto | 20 |
| 2 | Anna | 22 |
| 3 | Alex | 19 |
진짜 간단하지? 긴 리스트 대신 딱 3줄만 보여. LIMIT이 우리가 요청한 만큼만 반환해준 거야.
LIMIT 실전 활용
예시 2: top-상품
너가 products 테이블에서 제일 비싼 상품 5개 이름이랑 가격만 보고 싶다고 해보자. 먼저 가격 내림차순으로 정렬하고, 결과를 제한하면 돼:
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;
결과:
| product_name | price |
|---|---|
| iPhone 16 Pro Max | 1500 |
| MacBook Pro | 1200 |
| AirPods Pro | 300 |
| iPad Pro | 280 |
| Apple Watch | 250 |
이제 제일 비싼 top-5 상품만 볼 수 있지.
LIMIT으로 쿼리 테스트하기
SQL 쿼리 만들 때 데이터가 엄청 많을 수 있어. LIMIT을 쓰면 일단 쿼리가 잘 동작하는지 소량 데이터로 먼저 확인할 수 있어. 예를 들어:
SELECT *
FROM transactions_log
LIMIT 10;
쿼리 로직이 맞는지 확인했으면 LIMIT을 빼면 돼.
LIMIT 쓸 때 주의할 점
1. ORDER BY 없이 LIMIT 쓰기
ORDER BY를 안 쓰면 LIMIT이 데이터를 랜덤하게, 아니면 테이블에 저장된 순서대로 반환해. 보통은 상관없지만, 가끔은 예측 불가한 결과가 나올 수 있어.
예를 들어:
SELECT name, age
FROM students
LIMIT 3;
ORDER BY 없이 쓰면 어떤 3개가 나올지 확실하지 않아.
이럴 땐 ORDER BY를 꼭 써줘:
SELECT name, age
FROM students
ORDER BY age DESC
LIMIT 3;
2. WHERE랑 같이 쓰기
WHERE로 행을 필터링하고 LIMIT으로 결과 개수를 제한할 수 있어. 데이터가 너무 많을 때, 처음 몇 개만 보고 싶을 때 딱이야.
SELECT *
FROM students
WHERE age > 18
LIMIT 5;
이 쿼리는 18살 넘는 학생 중 처음 5명만 반환해.
3. 실전: 첫 페이지 데이터 보기
데이터 보여주는 시스템(예: 웹앱)에서 LIMIT을 써서 첫 페이지 데이터만 보여줄 수 있어.
SELECT *
FROM employees
ORDER BY hire_date
LIMIT 10;
이렇게 하면 입사일 순으로 정렬된 직원 10명만 볼 수 있어.
심화 예시: LIMIT이랑 집계 함수 같이 쓰기
예를 들어, 제일 인기 많은 상품 카테고리 3개만 보고 싶다고 해보자:
SELECT category, COUNT(*) AS total_products
FROM products
GROUP BY category
ORDER BY total_products DESC
LIMIT 3;
이 쿼리는 먼저 카테고리별로 묶고, 개수로 정렬한 다음, 3개만 남겨.
GROUP BY 연산자랑 COUNT() 함수가 어떻게 동작하는지는 다음 강의에서 더 자세히 배울 거야.
LIMIT 쓸 때 흔한 실수
LIMIT을 쓰다 보면 이런 문제들이 생길 수 있어:
"행 순서가 랜덤": ORDER BY를 빼먹으면 데이터가 예상치 못한 순서로 올 수 있어. 순서가 중요하면 꼭 정렬 기준을 써줘.
"중요한 데이터 누락": 만약 정렬 기준 컬럼 값이 같은 행이 여러 개면, LIMIT이 결과를 다 안 보여줄 수도 있어. 이런 경우엔 정렬 기준을 더 추가해줘야 해.
SELECT *
FROM students
ORDER BY age DESC, name ASC
LIMIT 5;
"WHERE랑 조합이 이상함". 가끔 필터 조건이 너무 좁으면 LIMIT이 의미 없어져. 예를 들어, WHERE로 2개만 남는데 LIMIT이 10이면, 결국 2개만 나와.
"DB마다 다름". 어떤 DBMS는 행 제한 문법이 달라 (예: SQL Server에선 TOP 씀). PostgreSQL은 LIMIT을 써.
실생활에서 LIMIT이 왜 필요할까?
레코드가 많은 인터페이스: 예를 들어, 인터넷 쇼핑몰에서 상품을 페이지별로 볼 때. 첫 페이지에 10개만 보여주고, LIMIT이 그걸 가능하게 해줘.
리포트: 보통 상위 데이터만 궁금할 때가 많아 (예: top-5 직원, 판매왕, 점수 제일 높은 학생 등).
쿼리 테스트랑 최적화: 수백만 행을 다루는 대신, 소량 데이터로 쿼리를 빠르게 테스트할 수 있어.
GO TO FULL VERSION