mysql의 limit 키워드를 사용하면 많은 게시물 중 일부분만을 가져올 수 있다. 데이터베이스에서 값을 일부분만을 가져오면 굳이 서버단인 백엔드에서의 작업이 줄어들고 데이터를 요청하고 가져오는 양이 줄어들기 때문에 성능향상에 도움이 되기도 한다.
mysql limit
mysql 의 limit 는 데이터베이스 테이블의 값들 중 일부분만을 가져온다.
기본 문형은 다음과 같다.
시작위치는 Offset으로 표현하고, 게시물 수는 row count 로 표현한다.
시작위치는 생략가능하며, 게시물 수는 반드시 작성해야 한다.
SELECT *
FROM 테이블명
LIMIT [시작위치 OFFSET], 게시물 수 ROW_COUNT
만약 시작위치가 생략했다면 조회된 게시물의 처음위치에서 게시물 수만큼 값을 가져오게 된다.
아래 2개의 쿼리는 서로 의미가 같고, 결과물도 같다.
SELECT *
FROM 테이블명
LIMIT 5
SELECT *
FROM 테이블명
LIMIT 0, 5
위의 쿼리는 서로 다르지만 조회된 게시물부터 5개 가져오는 의미는 같다.
그렇다면 게시판 페이징에서 어떻게 이용하면 될까?
시작위치 offset
mysql 에서 select 를 하면 많은 데이터가 조회되는 것을 볼 수 있다.
offset은 행의 위치를 말하는 것이며 0부터 시작한다.
아래의 코드는 어떤 테이블에서 offset이 5인 지점에서 게시물 수 5개를 조회하라는 것이다.
offset은 0부터 시작한다.
게시물의 행이 6번째인 곳부터 게시물 5개를 읽어 들어온다.
SELECT *
FROM 테이블명
LIMIT 5, 5
게시판 페이징 계산하여 조회하기
화면단인 프론트엔드에서 페이징의 숫자를 클릭하면 숫자에 해당하는 테이블 위치의 게시물을 가져오게 될 것이다.
조건은 한페이지에 게시물이 5개 보여준다고 가정해 보자.
1페이지부터 3페이지까지의 예를 들어보자.
-- 1페이지 게시물 5개
SELECT *
FROM 테이블명
LIMIT 0, 5
-- 2페이지 게시물 5개
SELECT *
FROM 테이블명
LIMIT 5, 5
-- 3페이지 게시물 5개
SELECT *
FROM 테이블명
LIMIT 10, 5
앞의 offset 번호가 페이지가 변할 때마다 계산해 주면 된다.
단순한 수식이 하나 나올 수 있다.
곱하기 5를 해주는 이유는 게시물이 5개씩 이기 때문에 offset또한 5번째씩 시작위치가 바뀐다.
1 페이지 : (1-1)*5 : 0 offset : 게시물5개
2 페이지 : (2-1)*5 : 5 offset : 게시물5개
3 페이지 : (3-1)*5 : 10 offset : 게시물5개
4 페이지 : (4-1)*5 : 15 offset : 게시물5개
5 페이지 : (4-1)*5 : 15 offset : 게시물5개
최종쿼리는 다음과 같다.
수식은 서버단인 백엔드에서 해도 되고, 화면단인 프론트엔드에서 해도 된다.
SELECT *
FROM 테이블명
LIMIT (화면에서 넘어온 페이지번호 - 1) * 5, 5
'programming > DataManage' 카테고리의 다른 글
비트연산자 or 비교되는 비트가 둘 중 하나가 1이면 1 (0) | 2021.08.31 |
---|---|
비트연산자 and 비교되는 비트가 둘 다 1이면 1 (0) | 2021.08.30 |
게시판 페이징 범위 조건처리 자바스크립트 구현 (0) | 2021.08.04 |
게시판 페이지 자바스크립트 구현 하기 mysql 5.x 사용 (0) | 2021.08.03 |
게시판 페이지 구조의 이해 처음 이전 페이지 다음 마지막 mysql 5.x 사용 (0) | 2021.08.02 |
댓글