MySQL SQL\u CALC\u FOUND\u ROWS()和FOUND\u ROWS()能否用作一个查询?

MySQL SQL\u CALC\u FOUND\u ROWS()和FOUND\u ROWS()能否用作一个查询?,mysql,Mysql,选择SQL\u CALC\u FOUND\u ROWS和FOUND\u ROWS()是否可以用作一个查询 $query = 'SELECT SQL_CALC_FOUND_ROWS * FROM Users LIMIT 0,50'; mysql_query($query); $count_query = 'SELECT FOUND_ROWS()'; mysql_query($query); 如果没有,那又有什么意义呢? 为什么不直接使用这两个查询呢 $query = 'S

选择SQL\u CALC\u FOUND\u ROWS和FOUND\u ROWS()是否可以用作一个查询

$query = 'SELECT SQL_CALC_FOUND_ROWS * FROM Users LIMIT 0,50';
    mysql_query($query);
    $count_query = 'SELECT FOUND_ROWS()';
    mysql_query($query);
如果没有,那又有什么意义呢? 为什么不直接使用这两个查询呢

$query = 'SELECT * FROM Users LIMIT 0,50';
$count_query = 'SELECT COUNT(*) FROM Users';
福利? 缺点? 差异

我更喜欢的是,只进行一次调用(有一个限制)和一个列,该列包含表中所有记录的总记录计数


如果这是不可能的-我想了解上述两种方法之间的区别。

区别在于
SELECT COUNT(*)FROM Users
必须对行进行计数。对于某些数据库引擎来说,这可能会很昂贵(MyISAM将表大小保留在元数据中,因此很便宜)。由于上一个查询已经必须扫描所有行,并且您告诉它记住计数,
FOUND\u rows()
只返回保存的计数

但是,除非在第一个查询中使用
LIMIT
,否则使用
FOUND\u ROWS()
没有什么意义。您可以简单地使用:

$result = mysql_query($query);
$row_count = mysql_num_rows($result);

SQL\u CALC\u FOUND\u ROWS
的主要好处是当查询包含
LIMIT
子句时
FOUND_ROWS()
返回在没有该选项的情况下将返回的行总数。这对于分页很有用,因为您可以从中计算总页数,而无需执行另一个使用
COUNT(*)

的查询。这是两个单独的调用吗?是的,获取
FOUND\u ROWS()的调用
必须是一个单独的查询。我们认为可以将其与结果或其他内容一起在单独的行中传递。。。您知道,像选择SQL\u CALC\u FOUND\u ROWS作为我的计数一样,您可以通过使用
计数(*)
以及
分组依据和
汇总来实现这一点。您将获得一个额外的行,其中的分组列=
NULL
,计数将是总数。但是仅使用
mysql\u num\u rows()
有什么错呢?这不会执行额外的查询。