我们一般用 COUNT() 或者 mysql_num_rows() 来获取查询的行数;
在MySQL4,5里面,有 SQL_CALC_FOUND_ROWS 可以在查询的同时,计算行数:
$query
=
"
SELECT SQL_CALC_FOUND_ROWS * FROM title WHERE ID >1000 LIMIT 10;
"
;
$result = $db -> query ( $query ) ;
$line = $db -> fetch_row ( $db -> query ( " SELECT FOUND_ROWS(); " )) ;
print_r ( $line ) ;
$result = $db -> query ( $query ) ;
$line = $db -> fetch_row ( $db -> query ( " SELECT FOUND_ROWS(); " )) ;
print_r ( $line ) ;
此时,不用额外的查询,即可得到
SELECT count(id) FROM tabled WHERE id>1000;
这样子的结果了。
不过,http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#limit-optimization 说:
只要MySQL已经发送了需要的行数到客户,它将放弃查询,除非你正使用SQL_CALC_FOUND_ROWS。