화면을 구성할 데이터를 SELECT 할 때
페이징 기능 등을 위해서 데이터의 row 수를 같이 반환해야 할 때가 있다.
이 때
select count(*) as total from DATA;
select * from DATA;
결과 : 150 & 데이터
이렇게 두번의 100퍼센트 스캐닝을 하게된다
이를 방지하기 위한 mysql 기능이다.
select * from DATA;
select FOUND_ROWS();
결과 : 데이터 & 150
직전 쿼리 수행 결과에서 row수를 반환한다.
이로써 100퍼센트 스캔을 두 번 실행하는 경우를 없앴다.
FOUND_ROW()는 LIMIT 를 따른다.
select * from DATA LIMIT 10;
select FOUND_ROWS();
결과 데이터(10개) & 10
여기서 limit 를 제외한 전체 row 수를 찾기 위한 조건
select SQL_CALC_FOUND_ROWS * from DATA limit 10;
select FOUND_ROWS();
결과 : 데이터(10개) & 150