MySQL에서 상위 10개 레코드만 조회하고 싶다면 LIMIT 절을 사용하면 됩니다. LIMIT 절은 반환되는 행의 개수를 제한해 주기 때문에, 대량의 데이터 중에서 필요한 만큼만 효율적으로 가져올 때 매우 유용합니다.
실제 동작 과정을 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> PageNumber text
-> );
Query OK, 0 rows affected (2.50 sec)
2단계: 샘플 데이터 삽입하기
INSERT 명령어를 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable values('Page-1');
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable values('Page-2');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Page-3');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values('Page-4');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('Page-5');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values('Page-6');
Query OK, 1 row affected (1.12 sec)
mysql> insert into DemoTable values('Page-7');
Query OK, 1 row affected (1.21 sec)
mysql> insert into DemoTable values('Page-8');
Query OK, 1 row affected (1.15 sec)
mysql> insert into DemoTable values('Page-9');
Query OK, 1 row affected (0.89 sec)
mysql> insert into DemoTable values('Page-10');
Query OK, 1 row affected (1.20 sec)
mysql> insert into DemoTable values('Page-11');
Query OK, 1 row affected (0.86 sec)
mysql> insert into DemoTable values('Page-12');
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable values('Page-13');
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable values('Page-14');
Query OK, 1 row affected (0.47 sec)3단계: 전체 레코드 확인하기
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+------------+
| PageNumber |
+------------+
| Page-1 |
| Page-2 |
| Page-3 |
| Page-4 |
| Page-5 |
| Page-6 |
| Page-7 |
| Page-8 |
| Page-9 |
| Page-10 |
| Page-11 |
| Page-12 |
| Page-13 |
| Page-14 |
+------------+
14 rows in set (0.00 sec)
테이블에는 총 14개의 레코드가 저장되어 있습니다. 이제 여기서 상위 10개만 추출해 보겠습니다.
4단계: LIMIT 절로 상위 10개 레코드 조회하기
다음은 LIMIT 절을 활용하여 상위 10개 레코드만 선택하는 쿼리입니다.
mysql> select *from DemoTable limit 0,10;
출력 결과
+------------+
| PageNumber |
+------------+
| Page-1 |
| Page-2 |
| Page-3 |
| Page-4 |
| Page-5 |
| Page-6 |
| Page-7 |
| Page-8 |
| Page-9 |
| Page-10 |
+------------+
10 rows in set (0.00 sec)
LIMIT 구문 이해하기
LIMIT 0, 10 구문의 의미는 다음과 같습니다.
- 첫 번째 숫자(0): 시작 위치(오프셋)를 나타냅니다. 0은 첫 번째 레코드부터 시작한다는 의미입니다.
- 두 번째 숫자(10): 반환할 최대 행 개수를 지정합니다.
즉, 위 쿼리는 첫 번째 레코드부터 10개의 행을 가져옵니다. 오프셋이 0일 경우에는 LIMIT 10처럼 숫자 하나만 작성해도 동일한 결과를 얻을 수 있습니다. 또한 OFFSET 값을 조절하면 특정 범위의 데이터를 가져오는 페이지네이션(pagination) 기능도 손쉽게 구현할 수 있습니다.