• FOUND_ROWS() 

Note 

The SQL_CALC_FOUND_ROWS  query modifier and accompanying FOUND_ROWS() function are deprecated as of MySQL 8.0.17; expect them to be removed in a future version of MySQL. As a replacement, considering executing your query with LIMIT , and then a second query with COUNT(*)  and without LIMIT  to determine whether there are additional rows. For example, instead of these queries: 

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

Use these queries instead: 

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

COUNT(*)  is subject to certain optimizations. SQL_CALC_FOUND_ROWS  causes some optimizations to be disabled. 

A SELECT  statement may include a LIMIT  clause to restrict the number of rows the server returns to the client. In some cases, it is desirable to know how many rows the statement would have returned without the LIMIT , but without running the statement again. To obtain this row count, include an SQL_CALC_FOUND_ROWS  option in the SELECT  statement, and then invoke FOUND_ROWS()  afterward: 

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name -> WHERE id > 100 LIMIT 10; mysql> SELECT FOUND_ROWS(); 

The second SELECT  returns a number indicating how many rows the first SELECT  would have returned had it been written without the LIMIT  clause. 

In the absence of the SQL_CALC_FOUND_ROWS  option in the most recent successful SELECT  statement, FOUND_ROWS()  returns the number of rows in the result set returned by that statement. If the statement includes a LIMIT  clause, FOUND_ROWS()  returns the number of rows up to the limit. For example, FOUND_ROWS()  returns 10 or 60, respectively, if the statement includes LIMIT 10  or LIMIT 50, 10 . 

The row count available through FOUND_ROWS()  is transient and not intended to be available past the statement following the SELECT SQL_CALC_FOUND_ROWS  statement. If you need to refer to the value later, save it: 

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM ... ; mysql> SET @rows = FOUND_ROWS(); 

If you are using SELECT SQL_CALC_FOUND_ROWS , MySQL must calculate how many rows are in the full result set. However, this is faster than running the query again without LIMIT , because the result set need not be sent to the client. 

SQL_CALC_FOUND_ROWS  and FOUND_ROWS()  can be useful in situations when you want to restrict the number of rows that a query returns, but also determine the number of rows in the full result set without running the query again. An example is a Web script that presents a paged display containing links to 

