Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 한 번에 N개의 행만 조회하는 방법 – LIMIT 절 활용 가이드

대량의 데이터를 다룰 때 전체 결과를 한꺼번에 가져오는 것은 비효율적입니다. MySQL에서는 LIMIT 절을 사용해 한 번에 원하는 개수(N개)의 행만 조회할 수 있습니다. 이 글에서는 LIMIT 절의 기본 문법부터 실전 예제까지 단계별로 살펴보겠습니다.

LIMIT 절 기본 문법

한 번에 N개의 행만 가져오려면 아래와 같이 LIMIT 연산자를 사용합니다.

SELECT * FROM yourTableName LIMIT 0, N;

여기서 첫 번째 숫자는 시작 위치(오프셋), 두 번째 숫자는 가져올 행의 개수를 의미합니다. 즉, LIMIT 0, 10은 첫 번째 행부터 10개의 행을 가져온다는 뜻입니다.

실전 예제로 익히기

1단계: 테이블 생성

먼저 예제에 사용할 테이블을 생성하겠습니다.

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Name varchar(20)
   );
Query OK, 0 rows affected (0.25 sec)

Id 컬럼은 자동 증가(AUTO_INCREMENT)되는 기본 키이고, Name 컬럼에는 이름이 저장됩니다.

2단계: 샘플 데이터 삽입

insert 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.08 sec)

mysql> insert into DemoTable(Name) values('Larry');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Name) values('Bob');
Query OK, 1 row affected (0.08 sec)

mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Name) values('Mike');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Name) values('Carol');
Query OK, 1 row affected (0.05 sec)

mysql> insert into DemoTable(Name) values('Ramit');
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Name) values('Adam');
Query OK, 1 row affected (0.03 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Name) values('James');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Name) values('Jace');
Query OK, 1 row affected (0.05 sec)

총 13개의 이름 데이터가 삽입되었습니다.

3단계: 전체 데이터 확인

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+----+--------+
| Id | Name   |
+----+--------+
|  1 | John   |
|  2 | Larry  |
|  3 | Bob    |
|  4 | Sam    |
|  5 | Mike   |
|  6 | David  |
|  7 | Carol  |
|  8 | Ramit  |
|  9 | Adam   |
| 10 | Chris  |
| 11 | Robert |
| 12 | James  |
| 13 | Jace   |
+----+--------+
13 rows in set (0.00 sec)

4단계: LIMIT으로 10개의 행만 조회하기

이제 한 번에 N개의 행만 가져오는 쿼리를 실행해 보겠습니다. 여기서는 처음 10개의 행만 조회합니다.

mysql> select *from DemoTable LIMIT 0,10;

실행 결과는 다음과 같습니다.

+----+-------+
| Id | Name  |
+----+-------+
|  1 | John  |
|  2 | Larry |
|  3 | Bob   |
|  4 | Sam   |
|  5 | Mike  |
|  6 | David |
|  7 | Carol |
|  8 | Ramit |
|  9 | Adam  |
| 10 | Chris |
+----+-------+
10 rows in set (0.00 sec)

전체 13개의 행 중 앞의 10개만 반환된 것을 확인할 수 있습니다.

OFFSET을 활용한 페이지네이션

LIMIT의 시작 위치 값을 조정하면 간단한 페이지네이션(페이징 처리)을 구현할 수 있습니다.

  • LIMIT 0, 10 → 1페이지 (1~10번째 행)
  • LIMIT 10, 10 → 2페이지 (11~20번째 행)
  • LIMIT 20, 10 → 3페이지 (21~30번째 행)

예를 들어 나머지 3개의 행을 조회하려면 다음과 같이 작성합니다.

mysql> select *from DemoTable LIMIT 10,10;

정리

MySQL에서 한 번에 N개의 행만 가져오려면 LIMIT 시작위치, 개수 형식의 쿼리를 사용하면 됩니다. 오프셋 값을 변경하면 특정 구간의 데이터만 선택적으로 조회할 수 있어, 게시판 목록이나 무한 스크롤 같은 페이지네이션 기능을 구현할 때 매우 유용합니다.