MySQL에서 다음 행 페이지네이션 선택하기
MySQL에서 대량의 데이터를 다룰 때 한 번에 모든 결과를 가져오는 것은 비효율적입니다. 이럴 때 LIMIT 절을 활용하면 원하는 위치부터 지정한 개수만큼의 행만 조회할 수 있어, 게시판이나 목록 화면에서 자주 사용되는 페이지네이션을 손쉽게 구현할 수 있습니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다. id 컬럼은 자동 증가(AUTO_INCREMENT) 기본 키로 설정했습니다.
mysql> create table demo40
-> (
-> id int not null auto_increment primary key,
-> name varchar(40)
-> );
Query OK, 0 rows affected (1.73 sec)
2. 샘플 데이터 삽입
INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into demo40(name) values('Chris');
Query OK, 1 row affected (0.23 sec)
mysql> insert into demo40(name) values('David');
Query OK, 1 row affected (0.12 sec)
mysql> insert into demo40(name) values('Mike');
Query OK, 1 row affected (0.10 sec)
mysql> insert into demo40(name) values('Sam');
Query OK, 1 row affected (0.19 sec)
mysql> insert into demo40(name) values('Carol');
Query OK, 1 row affected (0.12 sec)
mysql> insert into demo40(name) values('bob');
Query OK, 1 row affected (0.13 sec)3. 전체 데이터 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from demo40;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----+-------+
| id | name |
+----+-------+
| 1 | Chris |
| 2 | David |
| 3 | Mike |
| 4 | Sam |
| 5 | Carol |
| 6 | bob |
+----+-------+
6 rows in set (0.00 sec)
4. LIMIT으로 다음 행 조회하기
LIMIT 절은 LIMIT 오프셋, 행 수 형태로 작성할 수 있습니다. 오프셋(offset)은 건너뛸 행의 개수를 의미하며, 0부터 시작한다는 점에 유의하세요. 예를 들어 LIMIT 4, 2는 앞의 4개 행을 건너뛰고 그다음 2개 행을 반환합니다.
mysql> select *from demo40 limit 4,2;
실행 결과는 다음과 같습니다.
+----+-------+
| id | name |
+----+-------+
| 5 | Carol |
| 6 | bob |
+----+-------+
2 rows in set (0.00 sec)
정리
이처럼 LIMIT 오프셋, 개수 구문을 사용하면 특정 지점부터 다음 행들을 간편하게 가져올 수 있습니다. 페이지 크기가 2라면 첫 페이지는 LIMIT 0, 2, 두 번째 페이지는 LIMIT 2, 2, 세 번째 페이지는 LIMIT 4, 2와 같이 오프셋 값을 조정하는 방식으로 페이지네이션을 구현할 수 있습니다. 참고로 MySQL 5.x 이상에서는 LIMIT 개수 OFFSET 오프셋 문법도 동일하게 지원되므로, 상황에 맞게 선택하여 사용하시면 됩니다.