-
[ 메모 ] MySQL SQL_CALC_FOUND_ROWS, FOUNT_ROWS() 키워드Technique/RDBMS 2016. 3. 31. 11:54반응형
MySQL로 작업을 하던중 검색되는 모든 행의 수를 알고 싶을 경우가 있다.
보통 PHP의 MySLQ 함수나 MySQLi함수 계열에선 result타입에 보면 num_rows()라는 녀석이 있어 이걸 참조하면 검색 되는 모든 결과를 알고 있다.
하지만 쿼리에 LIMIT를 거는 경우엔 전체수를 알려면 쿼리를 2번 던져야 하는 번거로움(?) 이 있다.
이를 조금이라도 더 쉽게 하고자 SQL_CALC_FOUND_ROWS 키워드를 사용한다.
사용법은
①SELECT SQL_CALC_FOUND_ROWS * FROM Table LIMIT 0, 10;
②SELECT FOUND_ROWS() AS total;
이 2개의 쿼리를 전송하는 것으로 가능하다.
①의 쿼리는 10개의 행을 가져 오지만 이때 지정한 SQL_CALC_FOUND_ROWS 때문에 MySQL정보상에는 Table의 전체 행 수가 남아 있다.
그리고 두번째 쿼리인 FOUND_ROWS()를 이용해 그 행 수를 확보 할 수 있다.
CAKE에서 $result = array ( "data" => $db_con->findAll(),
"count" => $db_con->find());
이렇게 쓰는걸 보고 나도 2개를 같이 확보 해 보고 싶단 취지로 시작해서 알게 되었다.
역시 난 아직 MySQL에 대해 아는게 없다..ㅠㅠ
반응형'Technique > RDBMS' 카테고리의 다른 글
InnoDB와 MyISAM 스토리지 엔진 비교 (0) 2016.04.10 [ 메모 ] MySQL index에 대하여 (0) 2016.03.31 [ 메모 ] is null 을 사용한 order by (0) 2016.03.31 Primary Key, Unique Index 에 대하여 (0) 2015.12.23 엔티티타입, 통합? 분리? (0) 2015.12.23