2015-09-18
말그대로 쿼리를 쓸때 한번의 SELECT쿼리로 해당 쿼리의 전체 개수도 바로 가져오는 방법으로 SQL_CALC_FOUND_ROWS를 쿼리의 컬럼이 나열되는곳 앞에 써준뒤, SELECT FOUND_ROW() 를 이용하여 바로 해당 쿼리의 개수도 가져오는 방법이다

좀더 상세한 설명은 아래 링크를 참조 하길 바란다.

참조 : http://xiel.net/entry/PHP-MYSQL-페이징할때-SQLCALCFOUNDROWS를-쓰자


삭제 대비용 원본글 복사

옛날 우리는 PHP로 페이징을 구현할때 아래와 같이 쿼리를 두번 쓰곤 했습니다. 전체페이지 수를 구하기위해서죠..

SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;

하지만 MYSQL은 매우 오래전부터 쿼리캐싱기능의 일부로 SQL_CALC_FOUND_ROWS 쿼리를 지원합니다. 사용법은 아래와 같습니다.

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();

인덱스를 잘 타는경우 쿼리를 두번쓰는게 빠르다고 하지만.. 중소규모 사이트일경우 그닥차이가 없습니다. 이와같이 SQL_CALC_FOUND_ROWS 를 쓰면 상황에 따라 코드를 많이 줄일수 있습니다.