[SQL][MySQL] SQL_CALC_FOUND_ROWS와 FOUND_ROWS()

화면을 구성할 데이터를 SELECT 할 때

페이징 기능 등을 위해서 데이터의 row 수를 같이 반환해야 할 때가 있다.

이 때

select count(*) as total from DATA;
select * from DATA;

결과 : 150 & 데이터

이렇게 두번의 100퍼센트 스캐닝을 하게된다

이를 방지하기 위한 mysql 기능이다.

FOUND_ROWS()

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

참조

https://blog.asamaru.net/2015/09/11/using-sql-calc-found-rows-and-found-rows-with-mysql/![](https://media.vlpt.us/images/isntkyu/post/43327d65-0744-4ce7-a700-65b3a1bd5d7c/image.png)

좋은 웹페이지 즐겨찾기