MySQL에서 페이징 쿼리 구현

(사실 MariaDB 쓰지만)

OFFSET과 SQL_CALC_FOUND_ROWS를 써서 페이징 만들기. 성능은 모르겠고 코드는 편해짐.

SELECT SQL_CALC_FOUND_ROWS {찾을거} FROM {테이블명} WHERE {WHERE 조건} ORDER BY {정렬 조건} LIMIT {필요한 만큼의 row 수} OFFSET {몇 번째 해당 row부터 가져올건지};

이렇게 해놓고 LIMIT 조건으로 $pageSize, OFFSET에 $pageSize*($pageNum-1) 넣어서 원하는 부분의 해당 건들을 가져올 수 있다.

위 쿼리 실행 후 바로

SELECT FOUND_ROWS() as totalRows;

이런식으로 FOUND_ROWS() 를 SELECT하면 처음 쿼리에서 WHERE 조건에 해당하는 게 몇 건이나 있었는지 (테이블에다가 다시 count() 시키지 않고) 받아올 수 있다. 전체 건수를 알아오면 전체가 몇 페이지인지 알 수 있다.

OFFSET 쓰는 거랑 LIMIT x,y 쓰는 거랑 차이가 있었는데 까먹음. 나중에 추가해야

Like what you read? Give superhakgoman a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.