MySQL SQL\u CALC\u FOUND\u ROWS()和FOUND\u ROWS()能否用作一个查询?
选择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
$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()
有什么错呢?这不会执行额外的查询。