MYSQL

ROWNUM함수가 없는 Mysql에서 페이지네이션 구현

randev 2019. 3. 13. 10:55

SELECT *

FROM  (SELECT @rnum := @rnum + 1 AS rownum,

                    testdb.*

         FROM ( SELECT @rnum := 0) r,

                  testdb

         ORDER BY idx DESC) result

WHERE rownum BETWEEN (1 + ( 1 - 1 ) * 10) AND ( 1 * 10 )


위의 경우는 페이지 사이즈가 10일 경우의 예제이다

페이지 사이즈가 1 ~ 11 ~ 21 이렇게 10을 공차로 진행되기 때문에 

등차수열 공식에 따라

F(x) = a1(초기값 + (n-1)d(공차)

를 이용하여 1 + (n-1) * 10 이 된다.


또는 LIMIT 을 이용하여 페이지네이션이 가능하다


[MYSQL LIMIT을 이용한 페이지네이션 ] 


SELECT *

FROM testdb

ORDER BY IDX DESC

LIMIT 0, 10


성능은 LIMIT으로 하는게 더 좋다고 한다


그러나 LIMIT 으로 할 경우 자바단에서 LIMIT 에 첫번째 파라미터에 들어갈 값을 처리해줘야한다.


LIMIT 0 , 10   ------->  0번째 인덱스부터 10개 가져오는것


LIMIT 10, 10 --------> 10번쨰 인덱스부터 10개 가져오는것