Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 마지막 쿼리의 전체 행 수 확인하기 – FOUND_ROWS() 활용법

MySQL에서 LIMIT으로 일부 행만 가져온 후, 실제 조건에 해당하는 전체 행 수가 궁금할 때가 있습니다. 이럴 때 FOUND_ROWS() 함수를 사용하면 별도의 COUNT 쿼리 없이 전체 행 개수를 바로 확인할 수 있습니다.

기본 문법

SQL_CALC_FOUND_ROWS 옵션과 함께 아래와 같은 형식으로 쿼리를 작성합니다.

SELECT SQL_CALC_FOUND_ROWS TABLE_NAME FROM `information_schema`.tables WHERE TABLE_NAME LIKE "yourValue%" LIMIT yourLimitValue;

SQL_CALC_FOUND_ROWS는 LIMIT 절을 무시하고 조건에 맞는 모든 행의 개수를 미리 계산하도록 MySQL에 지시하는 옵션입니다. 이후 FOUND_ROWS()를 호출하면 계산된 전체 행 수를 반환받을 수 있습니다.

실전 예제

여기서는 'web'이라는 데이터베이스를 사용하며, 이름이 DemoTable29로 시작하는 테이블이 여러 개 있다고 가정해 보겠습니다. 위 문법을 적용해 이 중 4개의 행만 조회해 보겠습니다.

mysql> SELECT SQL_CALC_FOUND_ROWS TABLE_NAME FROM `information_schema`.tables WHERE TABLE_NAME LIKE "DemoTable29%" LIMIT 4;

쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+--------------+
| TABLE_NAME   |
+--------------+
| demotable29  |
| demotable290 |
| demotable291 |
| demotable292 |
+--------------+
4 rows in set (0.01 sec)

마지막 쿼리의 전체 행 수 확인하기

LIMIT 4를 사용했기 때문에 화면에는 4개의 행만 표시되었습니다. 하지만 실제로 조건에 일치하는 테이블은 몇 개일까요? 다음 쿼리로 간단히 확인할 수 있습니다.

mysql> SELECT FOUND_ROWS();

실행 결과는 다음과 같습니다.

+--------------+
| found_rows() |
+--------------+
| 10           |
+--------------+
1 row in set (0.00 sec)

결과를 보면 조건에 해당하는 테이블은 총 10개임을 알 수 있습니다. 즉, LIMIT으로 인해 4개만 화면에 보였지만, FOUND_ROWS() 덕분에 별도의 COUNT(*) 쿼리를 다시 실행하지 않고도 전체 행 수를 손쉽게 파악한 것입니다.

핵심 정리

  • SQL_CALC_FOUND_ROWS: LIMIT 적용 전의 전체 행 수를 계산하도록 지시하는 쿼리 옵션
  • FOUND_ROWS(): 바로 이전 쿼리에서 계산된 전체 행 수를 반환하는 함수
  • 게시판 페이징 등에서 전체 페이지 수를 구할 때 특히 유용하게 활용됩니다.