MySQL limit 기능에 대해서


게시판을 만들때 주로 사용하는 기능인데 DB에 있는 데이터를 모두 조회해서 가져오지 않고 

원하는 갯수만큼의 데이터만 조회해서 가져 오기 위한 기능이 DBMS마다 마련되어 있다.

MySQL을 예로 든다면 limit이라는 키워드를 쿼리문에 사용하여 이 기능을 이용할수 있다.


MySQL의 limit은 2개의 매개변수를 가지는데 

첫 번째는 「시작 위치」,  

두 번째는 「가져올 게시물 수」 이다. 


여기서 「시작 위치」라는 것은 그룹으로 묶었을 때 각 그룹들의 첫 번째 게시물(데이터)의 번호를 의미한다.

예를 들어 10,000개의 데이터를 5개씩 가져온다고 할때(「가져올 게시물 수」가 5이라는 뜻)

전체 데이터를 5개씩 묶었을 때 묶여진 각 그룹들의 첫 번째 게시물(데이터)의 일련 번호를 「시작 위치」라고 한다는 뜻이다.

예를 들어 5개씩 묶으면

0~4

5~9

10~14

15~19

...


이때 「시작 위치」는 0, 5, 10, 15...가 될 것이다.

이때 각 그룹들에 일련 번호를 붙일 때 1번부터가 아니라 0번부터 일련 번호가 붙여 진다는 점을 주의해야 한다.


select * from bbs1 where id='bbs1' order by number desc limit (5 - 1) * 10, 15

⇒ 40번째 이후부터 15개의 게시물을 가져오라는 뜻


만일 limit의 매개변수를 1개만 사용하면 해당 매개변수의 갯수만큼 게시물을 가져오라는 뜻이다.


select * from bbs1 where id='bbs1' order by number desc limit 10

⇒ 이건 limit 0, 10와 동일한 뜻이다.


아래와 같이 변수 형태로도 당근 사용이 가능하다.

$page는 시작 위치이고 $view_total은 가여올 게시물의 수이다.

 

$query = "select * from bbs1 where id='bbs1' order by no desc limit $page, $view_total";




+ Recent posts